如何判断Python SQLite数据库连接或游标是否已关闭?
假设你有以下代码:
import sqlite3
conn = sqlite3.connect('mydb')
cur = conn.cursor()
# some database actions
cur.close()
conn.close()
# more code below
如果我之后想使用 conn 或 cur 这两个对象,我怎么知道它们是否已经关闭了呢?我找不到 .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 特有的快捷方式。