2013-03-07 7 views
30

ich ein Python-Skript haben, die eine MySQL-Datenbank aktualisieren muss, habe ich bisher:Python mySQL-Update, Arbeiten aber nicht Tabelle aktualisiert

dbb = MySQLdb.connect(host="localhost", 
     user="user", 
     passwd="pass", 
     db="database") 
try: 
    curb = dbb.cursor() 
    curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11") 
    print "Row(s) were updated :" + str(curb.rowcount) 
    curb.close() 
except MySQLdb.Error, e: 
    print "query failed<br/>" 
    print e 

Das Skript druckt Row(s) were updated : mit der richtigen Anzahl von Zeilen, die eine haben RadioID von 11. Wenn ich den RadioID zu einer anderen Zahl ändere, die nicht in der Tabelle vorhanden ist, wird es Row(s) were updated :0 sagen. Die Datenbank wird jedoch nicht aktualisiert. Das Feld CurrentState bleibt einfach gleich. Wenn ich die SQL-Anweisung in PHPMyAdmin kopiere und verlasse, funktioniert es einwandfrei.

Antwort

72

Verwendung

dbb.commit() 

nach

curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")

alle Änderungen zu übernehmen, die Sie 'geladen' in den MySQL-Server

+1

danken Ihnen. Dies hat es behoben – user2144306

21

Wie die @Lazykiddy wies darauf hin, müssen Sie Übernehmen Sie Ihre Änderungen, nachdem Sie sie in mysql geladen haben.

Sie auch diesen Ansatz nutzen, um die automatische Einstellung zu begehen, kurz nach der MySQL-Verbindung Initialisierung zu aktivieren:

dbb.autocommit(True) 

Dann wird es automatisch die Änderungen zu übernehmen Sie während Ihrer Codeausführung gemacht.

+2

Das wirft die Frage aber, wird diese Funktion das Datenbank-Commit nach jeder Abfrage Art passieren, auch SELECT, die die Tabelle in keiner Weise verändert? – Aaron

2

die zwei Antworten sind richtig. Sie können jedoch auch dies tun:

dbb = MySQLdb.connect(host="localhost", 
    user="user", 
    passwd="pass", 
    db="database", 
    autocommit=True) 

hinzufügen autocommit = True

+1

groß so einfach –

Verwandte Themen