如果我不关闭Python SQLite中的数据库连接怎么办

我正在做这样的事情

conn=sqlite3.connect(db\u文件名)
康涅狄格州:
cur=连接光标()
当前执行(…)

with自动提交更改。但是文档中没有提到关闭连接

实际上,我可以在后面的语句(我已经测试过)中使用conn。因此,上下文管理器似乎没有关闭连接

我必须手动关闭连接吗。如果我让它开着呢

编辑

我的调查结果:

  • 在上下文管理器中,连接未关闭,我已测试并确认。在退出时,上下文管理器仅通过执行连接提交()来提交更改
  • 与conn与sqlite3.connect(db_filename)作为conn是相同的,因此使用两者都将保持连接活动
  • with语句不会创建新的作用域,因此with套件中创建的所有变量都可以在其外部访问
  • 最后,您应该手动关闭连接

对于不关闭SQLite数据库会发生什么的特定问题,答案非常简单,适用于在任何编程语言中使用SQLite。当通过代码显式关闭连接或通过程序退出隐式关闭连接时,任何未完成的事务都将回滚。(回滚实际上是由打开数据库的下一个程序完成的。)如果没有打开的未完成事务,则不会发生任何事情

这意味着您不必太担心总是在进程退出之前关闭数据库,您应该注意事务,确保在适当的时间启动它们并提交

发表评论