如何判断Python SQLite数据库连接或游标是否已关闭?

13 投票
2 回答
17437 浏览
提问于 2025-04-15 17:29

假设你有以下代码:

import sqlite3

conn = sqlite3.connect('mydb')
cur = conn.cursor()
# some database actions
cur.close()
conn.close()
# more code below

如果我之后想使用 conncur 这两个对象,我怎么知道它们是否已经关闭了呢?我找不到 .isclosed() 这样的方法或者类似的东西。

相关问题:

2 个回答

0

怎么样才能确保连接和光标永远不被关闭呢?

你可以写一个状态管理的程序,确保它只在合适的时候调用关闭操作。

或者把它们放在其他对象里,这些对象可以有一个简单的关闭实现。还可以添加一个叫 _isclosed 的成员变量,这个变量由 close() 设置,然后通过 isclosed() 来访问。

12

你可以把代码放在一个 try, except 语句里:

>>> conn = sqlite3.connect('mydb')
>>> conn.close()
>>> try:
...     one_row = conn.execute("SELECT * FROM my_table LIMIT 1;")
... except sqlite3.ProgrammingError as e:
...     print(e)
Cannot operate on a closed database.

这依赖于一个 sqlite3 特有的快捷方式

撰写回答