3 votes

Plusieurs exécutions en utilisant MySQLdb

J'ai un script python qui effectue une dizaine d'opérations INSERT dans une base de données MySQL. Voici sa structure actuelle :

conn = MySQLdb.connect (host = DB_HOST,
                        port = DB_PORT,
                        user = DB_USER,
                        passwd = DB_PASSWORD,
                        db = DB_NAME)
cursor = conn.cursor()
cursor.execute("INSERT INTO...")
# faire quelques choses, puis un autre INSERT
cursor.execute("INSERT INTO...")
# faire d'autres choses, puis un autre INSERT
cursor.execute("INSERT INTO...")
etc...
conn.commit()
cursor.close()
conn.close()

Est-ce la bonne manière de réaliser des inserts multiples, ou devrais-je fermer le curseur après chaque INSERT? Devrais-je faire un commit après chaque INSERT?

3voto

S.Lott Points 207588

Dois-je fermer le curseur après chaque INSERT?

Cela n'a pas beaucoup d'importance. Les curseurs sont réutilisés de manière astucieuse.

Vous pouvez les fermer pour être super prudents avec vos ressources.

Faites ceci.

from contextlib import closing
with closing( conn.cursor() ) as cursor:
    cursor.execute("INSERT INTO...")

Cela assure que le curseur est fermé peu importe le type d'exceptions qui se produisent.

Devrais-je faire un commit après chaque INSERT?

Cela dépend de ce que votre application est censée faire.

S'il s'agit d'une proposition "tout ou rien", alors vous faites un commit. Tous les inserts sont bons ou aucun d'entre eux ne l'est.

Si des résultats partiels sont acceptables, alors vous pouvez faire un commit après chaque insert.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X