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

时间:2009-12-30 17:36:54

标签: python sqlite database-connection

假设您有以下代码:

import sqlite3

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

如果我稍后尝试使用conncur个对象,我怎么能告诉它们已关闭?我找不到.isclosed()方法或类似的方法。

2 个答案:

答案 0 :(得分:10)

你可以用try, except语句包装:

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

这取决于shortcut specific to sqlite3

答案 1 :(得分:0)

如何确保连接和光标永远不会关闭?

你可以拥有一个基于状态的程序,你可以保证只在正确的时间调用close()。

或者将它们包装在传递实现为close()的其他对象中。或者按_isclosed添加close()成员集,并由isclosed()访问。