2013-07-05 24 views
1

我可以爲SQLAlchemy Core連接使用上下文管理器嗎?換句話說,是SQLAlchemy核心連接上下文管理器

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

一樣

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

我並不需要提交,回滾等在上下文管理器退出任何檢查。

回答

5

您可以使用連接作爲上下文管理器。

查看連接的__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