Как определить, закрыто ли соединение с базой данных 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 ответов
вы можете обернуть в 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.
как насчет того, чтобы убедиться, что соединение и курсор никогда не закрываются?
у вас может быть государственная программа, которую вы можете гарантировать только вызовы close() в нужное время.
или обернуть их в другие объекты, которые имеют реализацию pass close()
. Или добавить _isclosed
элемент, установленный close()
, к isclosed()
.