Insert wird nicht ausgeführt

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
nieselfriem
User
Beiträge: 135
Registriert: Sonntag 13. Januar 2013, 16:00

Hallo!

Ich versuche mich in Python-Datenbankprogrammierung. So weit läufts ganz gut, doch leider werden die Daten nicht in meine DB geschrieben.

Code: Alles auswählen

import mysql.connector as mdb
import sys

try:
    cnx = mdb.connect(user='python_user', password='password',host='192.168.2.112',database='world')
    cur = cnx.cursor()
    cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Lion Feuchtwanger')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Emile Zola')")
    cur.execute("INSERT INTO Writers(Name) VALUES('Truman Capote')")
except mdb.Error as e:
    print ("Error %d: %s" % (e.args[0],e.args[1]))
    sys.exit(1)
finally:
    if cnx:
        cnx.close()
Das Script quitiert die Ausführung mit einem

Code: Alles auswählen

Process finished with exit code 0
Doch die Daten werden nicht in die Datenbank/Tabelle eingefügt.
ICh verwende Python 3.3 und den MySQL Connector direkt von MySQL und MySQL 5.5.40
Der User python_test hat auch die richtigen Rechte.

Was mach ich falsch
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

@nieselfriem: Der MySQL-Connector macht von sich aus kein AUTOCOMMIT. Du mußt also selbst »commit« aufrufen, damit die Transaktion auch persistent wird.
BlackJack

@nieselfriem: Der ``finally``-Zweig ist fehlerhaft. Wenn es bei `connect()` eine Ausnahme gab dann ist `cnx` undefiniert und du bekommst im ``finally`` einen `NameError`. Wenn es keine Ausnahme gab, dann ist das ``if`` unsinnig weil das *immer* wahr ist. Du möchtest also die Zuweisung an `cnx` vor ein ``try`` ziehen das zu dem ``finally`` gehört und das ``if`` loswerden.
Benutzeravatar
nieselfriem
User
Beiträge: 135
Registriert: Sonntag 13. Januar 2013, 16:00

Danke!

Jetzt funzts
Antworten