何时begin_nested用作上下文管理器,例如
with db.session.begin_nested:
# do something
Run Code Online (Sandbox Code Playgroud)
如果IntegrityError抛出,会db.session.rollbank()自动调用吗?相反,如果没有抛出异常,会db.session.commit()自动调用吗?
我找不到文档,但源似乎表明,如果一个事务(例如一个来自begin_nested)用作上下文管理器,则事务在退出时提交,或者如果块中存在错误则回滚或提交期间.
以下是相关来源:https://github.com/zzzeek/sqlalchemy/blob/81518ae2e2bc622f8cd47287a575ad4c0e43ead1/lib/sqlalchemy/orm/session.py#L558-L569