如何在SQL Alchemy中自动管理事务

时间:2018-04-10 16:45:42

标签: python transactions sqlalchemy contextmanager

使用java Hibernate& Spring框架,有一个事务管理器,我们可以配置一些事务规则,然后我们不需要每次都写“commit,flush,rollback”。

1 个答案:

答案 0 :(得分:0)

对于python SQL Alchemy,我们可以使用装饰器和上下文管理器来管理事务(来自doc的官方样本):

from contextlib import contextmanager

@contextmanager
def session_scope():
    """Provide a transactional scope around a series of operations."""
    session = Session()
    try:
        yield session
        session.commit()
    except:
        session.rollback()
        raise
    finally:
        session.close()


def run_my_program():
    with session_scope() as session:
        ThingOne().go(session)
        ThingTwo().go(session)

transactions library也是一个很好的选择。