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

标签 python mysql sqlalchemy

我正在为我的网络应用程序使用 SQLAlchemy。我见过很多这样的代码:

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

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

最佳答案

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

在实践中,这种错误恢复逻辑并不容易推理,因此大多数人只是回滚(撤消对事务所做的任何更改)以保持数据处于一致状态,并将问题传达给用户。

关于python - sqlalchemy:每次提交都需要回滚吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36381489/

相关文章:

python - 如何将字典列表作为函数参数传递?

MySQL delete with subquery给出语法错误

mysql - Rails 3 App Mysql2::Error - 新手无法写入数据库

python - 如何创建非持久 Elixir/SQLAlchemy 对象?

python - 使用Kombu ConsumerMixin,如何声明多个绑定(bind)?

python - 错误的 ctypes 分配

python - 为什么当我使用 .astype(str) 时 numpy/pandas 仅返回第一个字符

php - 尝试查询数组

python - 在 Ubuntu 上使用 Python 的 Azure WebApp 中的连接泄漏

python - 删除 ManyToMany 中间表中的行