【问题标题】:SQLAlchemy Core Connection Context ManagerSQLAlchemy 核心连接上下文管理器
【发布时间】:2023-08-10 04:13:01
【问题描述】:

我可以为 SQLAlchemy Core 连接使用上下文管理器吗?换句话说,是

conn = engine.connect()
conn.execute('SELECT * FROM FOO')
conn.close()

一样
with engine.connect() as conn:
    conn.execute('SELECT * FROM FOO')

我不需要在上下文管理器退出时对提交、回滚等进行任何检查。

【问题讨论】:

    标签: python sqlalchemy mysql-python


    【解决方案1】:

    您可以将连接用作上下文管理器。

    请参阅连接的__enter____exit__ 方法以了解其实现方式。 __enter__ 只返回 self__exit__ 调用关闭。

    或者你可以试试:

    from sqlalchemy import create_engine
    engine = create_engine("sqlite:///:memory:")
    with engine.connect() as conn:
        print(conn.closed)
    print(conn.closed)
    

    输出:

    错误的 真的

    【讨论】: