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 необходимо закрыть курсор?))

ссылки: когда закрыть курсоры с помощью MySQLdb

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


закрытие соединения должно быть достаточно хорошо здесь в этом конкретном контексте. Если вы работаете с несколькими курсорами и т. д. вы должны заботиться о правильном управлении ресурсами.