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