2013-12-10 5 views
39

arbeitete ich dies aus PyDev in Eclipse renne ...Pymysql INSERT INTO nicht

import pymysql 
conn = pymysql.connect(host='localhost', port=3306, user='userid', passwd='password', db='fan') 
cur = conn.cursor() 
print "writing to db" 
cur.execute("INSERT INTO cbs_transactions(leagueID) VALUES ('test val')") 
print "wrote to db" 

Das Ergebnis ist, an der Spitze der Konsole sagt, es C: ... test.py, und in die Konsole:

Schreiben db schrieb

So endet es erst nach dem Befehl ausführen db. Aber wenn ich in der Tabelle in MySQL nachschaue, ist es leer. Ein Datensatz wurde nicht eingefügt.

Zunächst, warum schreibt es nicht die Aufzeichnung. Zweitens, wie kann ich ein Protokoll oder einen Fehler sehen, um zu sehen, was passiert ist? Normalerweise sollte es einen roten Fehler geben, wenn der Code nicht funktioniert.

+0

Mögliche Duplikat [Datenbank nicht automatisch aktualisiert mit MySQL und Python] (https: // Stackoverflow .com/questions/384228/datenbank-does-not-update-automatisch-mit-mysql-and-python) – Simeon

Antwort

76

Haben Sie es begangen? conn.commit()

+0

Ich wusste nicht darüber. Vielen Dank. Das hat es gelöst. –

72

PyMySQL deaktivieren Autocommit standardmäßig können Sie autocommit=True zu connect hinzufügen:

conn = pymysql.connect(
    host='localhost', 
    user='user', 
    passwd='passwd', 
    db='db', 
    autocommit=True 
) 

oder rufen Sie conn.commit() nach Ihrer Anfrage

+0

Danke. Ich suchte nach einem Autocommit-Beispiel. Ausgezeichnet! – davesave

+0

Perfekte Antwort :) Danke! –

0

Sie entweder

  • conn.commit() vor dem Aufruf close
  • tun können

oder

  • ermöglichen autocommit über conn.autocommit(True) direkt nach dem Verbindungsobjekt zu schaffen.

Beide Wege wurden von verschiedenen Leuten bei einer Verdoppelung der Frage vorgeschlagen, die hier gefunden werden kann: Database does not update automatically with MySQL and Python