Как сказать, закрываются ли соединение с базой данных Python SQLite или курсор?

Скажем, то, что у Вас есть следующий код:

import sqlite3

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

Если я пытаюсь использовать conn или cur объекты позже, как я мог сказать, что они закрываются? Я не могу найти a .isclosed() метод или что-либо как он.

11
задан bernie 6 February 2013 в 16:49
поделиться

2 ответа

Можно обернуть в попытку, за исключением утверждения:

>>> 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.

10
ответ дан 3 December 2019 в 10:04
поделиться

Как насчет того, чтобы убедиться, что соединение и курсор никогда не будут закрыты?

Можно иметь программу, основанную на состоянии, которая может гарантировать только вызовы close() в нужное время.

Или обернуть их в другие объекты, которые имеют реализацию передачи close(). Или добавьте _открытый член, установленный функцией close() и доступный функцией isclosed().

.
0
ответ дан 3 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: