4 Stimmen

Kann keine INSERT-Anweisung in einem Python-Skript über MySQLdb ausführen

Ich versuche, eine grundlegende INSERT-Anweisung auf einer MySQL-Tabelle aus einem Python-Skript mit MySQLdb auszuführen. Meine Tabelle sieht so aus:

CREATE TABLE `testtable` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `testfield` varchar(255) NOT NULL,
    PRIMARY KEY (`id`)
)

Das Ausführen dieser Abfrage von der MySQL-Befehlszeile funktioniert einwandfrei:

INSERT INTO `testtable` (`id`, `testfield`) VALUES (NULL, 'testvalue');

Aber wenn ich versuche, die Abfrage aus einem Python-Skript auszuführen, werden keine Zeilen eingefügt. Hier ist mein Code:

conn = MySQLdb.connect(host=db_host, port=db_port, user=db_user, passwd=db_password, db=db_database)
cursor = conn.cursor ()
cursor.execute ("INSERT INTO `testtable` (`id`, `testfield`) VALUES (NULL, 'testvalue')")
print "Anzahl der eingefügten Zeilen: %d" % cursor.rowcount
cursor.close()
conn.close()

Seltsamerweise wird dies "Anzahl der eingefügten Zeilen: 1" ausgeben. Ich kann auch bestätigen, dass diese Abfrage das ID-Feld inkrementiert, denn wenn ich eine andere Zeile über die Befehlszeile hinzufüge, ist der Wert ihrer ID gleich, als ob das Python-Skript erfolgreich seine Zeilen eingefügt hätte. Wenn ich jedoch eine SELECT-Abfrage ausführe, werden keine Zeilen aus dem Skript zurückgegeben.

Irgendeine Idee, was schief läuft?

13voto

Henry Punkte 6292

Sie müssen entweder conn.autocommit() setzen oder conn.commit() ausführen - siehe die FAQ

6voto

dting Punkte 37410

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X