Maison >base de données >tutoriel mysql >Pourquoi les mises à jour de ma base de données MySQL avec Python ne se reflètent-elles pas dans la base de données ?

Pourquoi les mises à jour de ma base de données MySQL avec Python ne se reflètent-elles pas dans la base de données ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-06 19:38:14571parcourir

Why Aren't My MySQL Database Updates with Python Reflecting in the Database?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn