11

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

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

一样

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

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

4

1 回答 1

22

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

请参阅连接__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)

输出:

错误的
真的
于 2013-07-05T22:49:36.073 回答