Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Session.add()在SqlAlchemy(Python2.7)上不起作用_Python_Mysql_Sqlalchemy_Add - Fatal编程技术网

Session.add()在SqlAlchemy(Python2.7)上不起作用

Session.add()在SqlAlchemy(Python2.7)上不起作用,python,mysql,sqlalchemy,add,Python,Mysql,Sqlalchemy,Add,我正在使用SqlAlchemy-1.0.9和python 2.7 因此,当我尝试向会话添加对象时,什么都不会发生,因此数据不会插入数据库。顺便说一下,我正在使用mysql和我们的SQL 下面是一些代码: 首先,我创建一个函数,使“创建引擎”等。。。每次我想创建会话时都会使用它 base = declarative_base() engine = create_engine('mysql+oursql://root:toor@127.0.0.1/pandora', echo=True) def

我正在使用SqlAlchemy-1.0.9和python 2.7

因此,当我尝试向会话添加对象时,什么都不会发生,因此数据不会插入数据库。顺便说一下,我正在使用mysql和我们的SQL

下面是一些代码:

首先,我创建一个函数,使“创建引擎”等。。。每次我想创建会话时都会使用它

base = declarative_base()

engine = create_engine('mysql+oursql://root:toor@127.0.0.1/pandora', echo=True)

def sessionLoader():
    base.metadata.bind = engine
    DBSession = sessionmaker(bind=engine)
    session = DBSession()
    return session
然后在我的类中调用sessionLoader()方法:

我创建对象,依此类推,然后使用add()方法:

之后,控制台上不会显示错误或异常。 但是当我去数据库做一些选择时,那里没有数据

为了进行测试,我放置了以下代码:

print newEntity in sessionLoader()
它在控制台上显示“False”

因此,“add()”没有完成它应该做的工作


任何提示或帮助?

每次调用
sessionLoader()
创建新会话时。代码看起来像是在一个会话中创建实体并提交另一个会话。

每次调用
sessionLoader()
都是在创建新会话。代码看起来像是在一个会话中创建实体并提交另一个会话。

在我进行更改后,它变成:

session = sessionLoader()
newEntity = Entity(name = 'John')
session.add(newEntity)
session.commit()
于是它变成了:

session = sessionLoader()
newEntity = Entity(name = 'John')
session.add(newEntity)
session.commit()

现在它工作了

在我做出更改后,它变成了:

session = sessionLoader()
newEntity = Entity(name = 'John')
session.add(newEntity)
session.commit()
于是它变成了:

session = sessionLoader()
newEntity = Entity(name = 'John')
session.add(newEntity)
session.commit()

现在它工作了

明白了。。。我在创建实例后调用该方法时出错。。我所做的更正是:在创建实体之后才调用“sessionLoad()”方法,而不是在做整个事情之前“实例化”(就像我们对类所做的那样)。我使用了我在上面给出的答案中描述的修改。。。谢谢你的提示。。。我在创建实例后调用该方法时出错。。我所做的更正是:在创建实体之后才调用“sessionLoad()”方法,而不是在做整个事情之前“实例化”(就像我们对类所做的那样)。我使用了我在上面给出的答案中描述的修改。。。谢谢你的提示