В Python с sqlite необходимо закрыть курсор?

Вот сценарий. В вашей функции вы выполняете инструкции с помощью курсора, но один из них терпит неудачу и генерируется исключение. Ваша программа выходит из функции перед закрытием курсора, с которым она работала. Будет ли курсор перемещаться вокруг места? Мне нужно закрыть курсор?

Кроме того, в документации Python есть пример использования курсора и сказано: «Мы также можем закрыть курсор, если мы с ним закончим». Ключевое слово «can», а не «must». Что они означают именно этим?

2 Solutions collect form web for “В Python с sqlite необходимо закрыть курсор?”

Вероятно, это хорошая идея (хотя, возможно, это не имеет особого значения для sqlite, не знаю, но это сделает ваш код более портативным). Кроме того, с недавним Python (2.5+), это легко:

from __future__ import with_statement from contextlib import closing with closing(db.cursor()) as cursor: # do some stuff 

Вы не обязаны называть курсор close() ; это может быть сбор мусора, как любой другой объект.

Но даже если ожидание сбора мусора звучит нормально, я думаю, что было бы хорошим стилем, чтобы убедиться, что ресурс, такой как курсор базы данных, закрывается независимо от того, есть ли исключение.

  • (python-) sqlite3: запретить COMMIT от сброса курсора чтения на несвязанной временной таблице
  • Могу ли я распиливать словарь python в текстовое поле sqlite3?
  • Почему методы сеанса несвязаны в sqlalchemy с использованием sqlite?
  • Интерфейс GUI для ввода данных sqlite в Python
  • cursor.rowcount всегда -1 в sqlite3 в python3k
  • Где файл базы данных sqlite, созданный Django?
  • Обновление таблицы из другой таблицы с несколькими столбцами в sqlalchemy
  • Как вы избегаете строк для имен таблицы / столбцов SQLite в Python?
  • Как скопировать таблицу sqlite из базы данных диска в базу данных памяти в python?
  • Как я могу построить таблицу sqlite из этого файла xml / txt с помощью python?
  • Python Почему не пишет контекстный менеджер для работы курсора sqlite3?
  • Python - лучший язык программирования в мире.