Python MySQLdb: connexion.close() VS. curseur.proche()

si J'utilise MySQLdb pour me connecter à MySQL-Server via Python. Je crée un connection et un cursor comme ceci:

connection = MySQLdb.connect(...)
cursor = connection.cursor()
# process

quand le traitement MySQL est fait, il faut fermer le connection . Maintenant je me demandais: est-il suffisant de fermer le connection en faisant:

connection.close()

ou dois-je fermer le cursor d'abord, puis le connection ? Comme ceci:

cursor.close()
connection.close()
38
demandé sur Filipp W. 2011-03-31 22:09:10

3 réponses

pense moins. Utilisez plus d'outils.

from contextlib import closing
with closing( connection.cursor() ) as cursor:
    ... use the cursor ...

# cursor closed.  Guaranteed.

connection.close()
-20
répondu S.Lott 2011-03-31 18:59:31

fermer le curseur dès que vous en avez terminé est probablement le meilleur pari, puisque vous n'en avez plus besoin. Cependant, je n'ai rien vu où il est nocif de le fermer après la connexion db. Mais puisque vous pouvez le Définir comme:

cursor = conn.cursor()

je recommande de le fermer avant, au cas où vous l'assignez accidentellement à nouveau et la connexion DB est fermée car cela lancerait une erreur. Donc vous pouvez vouloir le fermer premier afin de prévenir une réaffectation accidentelle avec une connexion fermée.

(certains ne la ferment même pas du tout car elle est ramassée par le collecteur d'ordures (voir: en Python avec sqlite est-il nécessaire de fermer un curseur? ))

références: Quand à fermer les curseurs à l'aide de MySQLdb

en Python avec sqlite est-il nécessaire de fermer un curseur?

10
répondu lohiaguitar91 2017-05-23 11:47:28

fermer une connexion devrait être suffisant dans ce contexte particulier. Si vous travaillez avec plusieurs curseurs, etc. vous devez vous préoccuper de la bonne gestion des ressources.

3
répondu Andreas Jung 2011-03-31 18:14:08