Fehlerbehebung bei MySQL- und Python-Datenbankaktualisierungsproblemen
Beim Versuch, Daten in einer MySQL-Datenbank mit Python zu aktualisieren, können Entwickler auf Situationen stoßen, in denen Änderungen vorgenommen wurden durch Python-Code werden bei direkter Abfrage nicht in der Datenbank widergespiegelt. Dieser Artikel untersucht dieses Problem und bietet eine mögliche Lösung.
Problembeschreibung
Wie von einem Benutzer beschrieben, kann ein Programm, das MySQLdb zum Aktualisieren einer Datenbankzeile verwendet, die Datei nicht speichern ändert sich ständig. Der Code führt eine Aktualisierungsabfrage aus, aber bei der Überprüfung der Datenbank über die Befehlszeilenschnittstelle (CLI) werden die Aktualisierungen nicht beobachtet.
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()
Lösung
Die Das Problem ist auf die standardmäßige Transaktionsverarbeitung in MySQLdb zurückzuführen. Standardmäßig deaktiviert MySQLdb die automatische Festschreibung, was bedeutet, dass an der Datenbank vorgenommene Änderungen nicht gespeichert werden, bis eine Festschreibungsoperation explizit ausgeführt wird. Um das Problem zu lösen, sollte der Code vor dem Schließen der Verbindung einen Aufruf von conn.commit() enthalten:
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") # Commit the changes to the database conn.commit() 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()
Mit conn.commit() werden die Änderungen in die Datenbank übernommen, um sicherzustellen, dass nachfolgende Abfragen nicht ausgeführt werden spiegeln die aktualisierten Werte wider.
Das obige ist der detaillierte Inhalt vonWarum werden meine Python-MySQL-Updates nicht in der Datenbank angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!