2012-01-15 45 views
16

我在我的python代码(收集twitter状态并存储在数据库中)中出现了如下错误。SQLAlchemy嵌套回滚错误

sqlalchemy.exc.InvalidRequestError: This Session's transaction has been rolled back by a nested rollback() call. To begin a new transaction, issue Session.rollback() first. 

我想知道问题是什么,为什么会发生,以及如何解决它。我不知道nested rollback。有没有简单的例子发生nested rollback


编辑:该问题得到解决。 在这种情况下,直到我们明确地调用回滚时才会执行回滚,所以当我们包含commit()时,我们应该在try语句中编写它,并在http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction

中写入异常语句(在大多数情况下)中编写 rollback()

而且,这里是正确的代码示例。我从上面的链接引用了这个。

try: 
    <use session> 
    session.commit() 
except: 
    session.rollback() 
    raise 
finally: 
    session.close() # optional, depends on use case 

回答

11
+1

明白了。 因此,我应该在异常声明中明确地写**“session.rollback()”**。 非常感谢。 – fbessho 2012-01-15 17:24:21

+3

链接没有中断,但该部分不存在了... – fedorqui 2013-11-08 13:15:08

+1

链接断开...! – 2015-07-09 15:48:15