我正在做这样的事情...
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套件内创建的所有变量都可以在其外部访问- 最后,您应该手动关闭连接
sqlite3
是可以做到的)。但要安全起见,总比后悔好。当您不再使用连接时,请关闭它们。