我正在做这样的事情..。
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 套件中创建的所有变量都可以在其外部访问