如何在 SQL Alchemy 中自动管理交易

how to automate manage transactions in SQL Alchemy

当使用java Hibernate & Spring框架时,有一个事务管理器,我们可以配置一些事务规则,这样我们就不需要每次都写"commit, flush, rollback"东西了。

对于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也是一个不错的选择。