我使用SQLAlchemy作为我的网络应用。我见过很多像这样的代码:
try:
session.commit()
except:
session.rollback()
我想知道每个commit()
操作是否有必要。如果是,那么为什么它不是commit()
操作的一部分?如何确定何时rollback()
以及何时不?
答案 0 :(得分:2)
当提交失败时,它只意味着事务无法在不破坏某些约束的情况下完成。因此,原则上,您可以进行更新并尝试重新提交,而不是回滚。
在实践中,这样的错误恢复逻辑非常重要,因此大多数人只是回滚(撤消对事务所做的任何更改)以使数据保持一致状态,并将问题传达给用户。