我在我的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
的简单例子?
发布于 2019-05-25 20:55:23
问题已经解决了。在本例中,关键是在显式调用rollback之前不会执行rollback,因此当我们包含commit()
时,应该将其写入try语句中,并在异常语句中写入rollback()
(在大多数情况下),就像用https://docs.sqlalchemy.org/en/13/faq/sessions.html#this-session-s-transaction-has-been-rolled-back-due-to-a-previous-exception-during-flush-or-similar编写的那样
下面是正确的代码示例。我引用了上面的链接。
try:
<use session>
session.commit()
except:
session.rollback()
raise
finally:
session.close() # optional, depends on use case
https://stackoverflow.com/questions/8870217
复制相似问题