我正在做这样的事情..。
conn = sqlite3.connect(db_filename)
with conn:
cur = conn.cursor()
cur.execute( ... )
with
会自动提交更改,但是文档没有提到关闭连接。
实际上,我可以在后面的语句中使用 conn
(我已经测试过了)。因此,上下文管理器似乎没有关闭连接。
我必须手动关闭连接。如果我让它开着呢?
剪辑
我的发现是:
__exit__
上,上下文管理器仅通过执行 conn.commit()
提交更改with conn
和 with sqlite3.connect(db_filename) as conn
是相同的,因此使用任何一个都将保持连接活动with
语句不会创建新的作用域,因此在 with 套件中创建的所有变量都可以在其外部访问