Session.add()在SqlAlchemy(Python2.7)上不起作用
我正在使用SqlAlchemy-1.0.9和python 2.7 因此,当我尝试向会话添加对象时,什么都不会发生,因此数据不会插入数据库。顺便说一下,我正在使用mysql和我们的SQL 下面是一些代码: 首先,我创建一个函数,使“创建引擎”等。。。每次我想创建会话时都会使用它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
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()”方法,而不是在做整个事情之前“实例化”(就像我们对类所做的那样)。我使用了我在上面给出的答案中描述的修改。。。谢谢你的提示