Problem:
Ein Python-Skript kann eine Zeile in einem nicht aktualisieren MySQL-Datenbank, obwohl ein „UPDATE“-Befehl ausgeführt und eine Erfolgsmeldung abgerufen wurde. Bei manueller Abfrage der Datenbank über die CLI bleibt die Zeile jedoch unverändert.
Code Snippet:
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()
Ausgabe:
4 Number of rows updated: 1
Beobachtungen:
Lösung:
Das Problem hängt wahrscheinlich mit der fehlenden Transaktionsabwicklung zusammen. MySQLdb deaktiviert die automatische Festschreibung standardmäßig, was bedeutet, dass alle Änderungen an der Datenbank erst dann beibehalten werden, wenn explizit eine Festschreibung erfolgt.
Um das Problem zu beheben, fügen Sie die folgende Zeile hinzu, bevor Sie die Verbindung schließen:
conn.commit()
Dadurch werden die Änderungen in die Datenbank übernommen und sichergestellt, dass die Zeile wie vorgesehen aktualisiert wird.
Das obige ist der detaillierte Inhalt vonWarum aktualisiert mein Python-Skript meine MySQL-Datenbank trotz einer Erfolgsmeldung nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!