如果我在Python SQLite中不关闭数据库连接会怎么样?

14 浏览
0 Comments

如果我在Python SQLite中不关闭数据库连接会怎么样?

我正在做类似以下的事情...

conn = sqlite3.connect(db_filename)
with conn:
    cur = conn.cursor()
    cur.execute( ... )

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

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

我是否需要手动关闭连接?如果我将其保持打开会怎样?

编辑

我的发现:

  • 上下文管理器中没有关闭连接,我已经测试并确认。在 __exit__ 中,上下文管理器只是通过执行 conn.commit() 来提交更改
  • with connwith sqlite3.connect(db_filename) as conn 是一样的,所以使用其中任何一个都会保持连接的活动状态
  • with 语句不会创建新的作用域,因此在 with 语句块中创建的所有变量都可以在外部访问
  • 最后,你应该手动关闭连接
0