Dépannage des mises à jour de bases de données avec MySQL et Python
Votre problème survient lors de la mise à jour d'une base de données MySQL à l'aide de la bibliothèque MySQLdb de Python. Le code suivant est en cours d'exécution :
import MySQLdb conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname") cursor=conn.cursor() cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100") cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100") results = cursor.fetchall() for row in results: print row[0] print "Number of rows updated: %d" % cursor.rowcount cursor.close() conn.close()
Lors de l'exécution de ce code, il semble réussi, indiquant que la base de données a été mise à jour. Cependant, une interrogation ultérieure depuis l'interface de ligne de commande MySQL révèle que la mise à jour n'a pas été appliquée.
Cause
Le problème réside dans l'absence d'opération de validation. MySQLdb active les transactions par défaut et les mises à jour nécessitent une validation explicite pour les rendre permanentes. Sans validation, les modifications ne sont pas enregistrées dans la base de données.
Solution
Pour résoudre ce problème, incluez conn.commit() avant de fermer la connexion, comme indiqué ci-dessous :
import MySQLdb conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname") cursor=conn.cursor() cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100") cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100") results = cursor.fetchall() for row in results: print row[0] print "Number of rows updated: %d" % cursor.rowcount **conn.commit()** # Commit changes to database cursor.close() conn.close()
En incorporant conn.commit(), les modifications apportées à la base de données seront conservées avec succès.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!