Python MySQLdb: соединение.close () VS. курсор.закрывать()
если я использую MySQLdb для подключения к MySQL-серверу через Python. Я создаю connection
и a cursor
такой:
connection = MySQLdb.connect(...)
cursor = connection.cursor()
# process
когда MySQL-обработка сделана, следует закрыть connection
. Теперь мне было интересно: достаточно ли закрыть connection
делаем:
connection.close()
или я должен закрыть cursor
и connection
? Вот так:
cursor.close()
connection.close()
3 ответов
думаю, что меньше. Используйте инструменты больше.
from contextlib import closing
with closing( connection.cursor() ) as cursor:
... use the cursor ...
# cursor closed. Guaranteed.
connection.close()
закрытие курсора, как только вы закончите это, вероятно, лучший выбор, так как вы больше не пользуетесь. Однако я ничего не видел, где это вредно, чтобы закрыть его после подключения к БД. Но так как вы можете установить его как:
cursor = conn.cursor()
Я рекомендую закрыть его раньше, если вы случайно назначите его снова, и соединение с БД будет закрыто, так как это вызовет ошибку. Так что вы можете закрыть его первый предотвратить случайное переназначение с закрытым соединением.
(некоторые даже не закрывают его вообще, хотя он собирается сборщиком мусора (см.:в Python с sqlite необходимо закрыть курсор?))
закрытие соединения должно быть достаточно хорошо здесь в этом конкретном контексте. Если вы работаете с несколькими курсорами и т. д. вы должны заботиться о правильном управлении ресурсами.