Как узнать, закрыто ли соединение базы данных Python SQLite или курсор?
Скажем, что у вас есть следующий код:
import sqlite3
conn = sqlite3.connect('mydb')
cur = conn.cursor()
# some database actions
cur.close()
conn.close()
# more code below
Если я попытаюсь использовать объекты conn
или cur
позже, как я могу сказать, что они закрыты? Я не могу найти метод .isclosed()
или что-то в этом роде.
Ответы
Ответ 1
Вы можете заключить в оператор 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.
Это зависит от ярлыка, специфичного для sqlite3.
Ответ 2
Как убедиться, что соединение и курсор не закрыты?
У вас может быть государственная программа, в которой вы можете гарантировать только вызовы close() в нужное время.
Или оберните их в другие объекты, которые имеют реализацию перехода close()
. Или добавьте элемент _isclosed
, установленный close()
и доступ к которому можно выполнить с помощью isclosed()
.