sqlalchemy:每次提交都需要回滚吗?

时间:2016-04-03 04:03:05

标签: python mysql sqlalchemy

我使用SQLAlchemy作为我的网络应用。我见过很多像这样的代码:

try:
   session.commit()
except:
   session.rollback()

我想知道每个commit()操作是否有必要。如果是,那么为什么它不是commit()操作的一部分?如何确定何时rollback()以及何时不?

1 个答案:

答案 0 :(得分:2)

当提交失败时,它只意味着事务无法在不破坏某些约束的情况下完成。因此,原则上,您可以进行更新并尝试重新提交,而不是回滚。

在实践中,这样的错误恢复逻辑非常重要,因此大多数人只是回滚(撤消对事务所做的任何更改)以使数据保持一致状态,并将问题传达给用户。