我的python代码中收到了如下错误(收集了twitter状态并存储在数据库中)。
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
?
答案 0 :(得分:0)
问题已解决。
在这种情况下,要点是直到明确调用回滚才执行回滚,因此,当我们包含commit()
时,应将其写入try语句中,并将rollback()
写入异常语句中( (在大多数情况下)http://www.sqlalchemy.org/trac/wiki/FAQ#Thetransactionisinactiveduetoarollbackinasubtransaction
并且,这是正确的代码示例。我从上面的链接中引用了这一点。
try:
<use session>
session.commit()
except:
session.rollback()
raise
finally:
session.close() # optional, depends on use case