Heim >Datenbank >MySQL-Tutorial >Warum werden meine MySQL-Datenbankaktualisierungen mit Python nicht in der Datenbank widergespiegelt?
Fehlerbehebung bei Datenbankaktualisierungen mit MySQL und Python
Ihr Problem tritt auf, wenn Sie eine MySQL-Datenbank mithilfe der MySQLdb-Bibliothek von Python aktualisieren. Der folgende Code wird ausgeführt:
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()
Beim Ausführen dieses Codes scheint er erfolgreich zu sein, was darauf hinweist, dass die Datenbank aktualisiert wurde. Eine anschließende Abfrage über die MySQL-Befehlszeilenschnittstelle zeigt jedoch, dass das Update nicht angewendet wurde.
Ursache
Das Problem liegt im Fehlen eines Commit-Vorgangs. MySQLdb aktiviert Transaktionen standardmäßig und Aktualisierungen erfordern ein explizites Commit, um sie dauerhaft zu machen. Ohne Commit werden Änderungen nicht in der Datenbank gespeichert.
Lösung
Um dieses Problem zu beheben, schließen Sie conn.commit() ein, bevor Sie die Verbindung schließen, wie unten gezeigt:
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()
Durch die Einbindung von conn.commit() werden die an der Datenbank vorgenommenen Änderungen erfolgreich beibehalten.
Das obige ist der detaillierte Inhalt vonWarum werden meine MySQL-Datenbankaktualisierungen mit Python nicht in der Datenbank widergespiegelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!