begin_nested()会自动回滚/提交吗?

时间:2014-01-27 10:57:11

标签: python sqlalchemy

begin_nested用作上下文管理器时,例如

with db.session.begin_nested:
    # do something

如果抛出IntegrityError,会自动调用db.session.rollbank()吗?相反,如果没有抛出异常,会自动调用db.session.commit()吗?

1 个答案:

答案 0 :(得分:8)

我找不到文档,但源代码似乎表明如果某个事务(例如来自begin_nested的事务)用作上下文管理器,则事务在退出时提交,或者如果块中或提交期间出错。

以下是相关来源:https://github.com/zzzeek/sqlalchemy/blob/81518ae2e2bc622f8cd47287a575ad4c0e43ead1/lib/sqlalchemy/orm/session.py#L558-L569