Flask SQLAlchemy 嵌套事务:`db.session.begin_nested()` 使用指南
在使用 Flask SQLAlchemy 的 db.session.begin_nested() 方法进行嵌套事务时,如果未显式地提交或回滚事务,可能会导致数据无法写入。db.session.begin_nested() 方法创建一个新的嵌套事务,它只在该代码块中生效。如果在嵌套事务中没有调用 commit() 或 rollback() 方法,则更改不会保存。
确保在使用了 db.session.begin_nested() 方法的代码块结束时,调用 commit() 方法来提交事务。如果需要回滚嵌套事务中的更改,可以使用 rollback() 方法。
以下是一个示例代码,展示了如何在嵌套事务中正确提交或回滚更改:
from sqlalchemy.exc import IntegrityError
# 外部事务
try:
with db.session.begin_nested():
# 嵌套事务
# 执行数据库操作
# db.session.add(...)
# db.session.commit()
except IntegrityError:
db.session.rollback() # 回滚嵌套事务中的更改
请确保在适当的位置添加数据库操作以及调用 commit() 或 rollback() 方法。
原文地址: https://www.cveoy.top/t/topic/pj5U 著作权归作者所有。请勿转载和采集!