SQLAlchemy核心连接上下文管理器

时间:2013-07-05 22:29:29

标签: python sqlalchemy mysql-python

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

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

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

我不需要在上下文管理器出口处检查提交,回滚等。

1 个答案:

答案 0 :(得分:8)

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

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

输出:

False
True