我正在做类似于这样的事情...
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
语句不会创建新的作用域,因此在其内部声明的所有变量都可在其外部访问- 最后,您应该手动关闭连接
sqlite3
会这样做)。但最好还是安全第一,当你不再使用连接时,请关闭它们。 - Avaris