Einfaches Tutorial Skript spinnt, Warning: Unknown table

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Sinnentlehrt
User
Beiträge: 67
Registriert: Mittwoch 30. Januar 2013, 22:32

Hallo Leute,

dachte ja da kann ja gar nichts schiefgehen aber so irrt man sich.

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import MySQLdb as mdb

con = mdb.connect('localhost', 'user', 'passwort', 'testdb')

with con:
    
    cur = con.cursor()
    cur.execute("DROP TABLE IF EXISTS Writers")
    cur.execute("CREATE TABLE Writers(Id INT PRIMARY KEY AUTO_INCREMENT, \
                 Name VARCHAR(25))")
    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')")
Diese kleine Skript gibt in der IDLE aus.

Code: Alles auswählen

Warning (from warnings module):
  File "/home/gutschy/.gimp-2.8/plug-ins/test2_mysql_connect.py", line 11
    cur.execute("DROP TABLE IF EXISTS Writers")
Warning: Unknown table 'Writers'
Also eigentlich ist doch alles klar, oder? Lösche die Tabelle falls eine da ist, ansonsten mach halt eine neu.
Was kann denn da schon jetzt schiefgehen? Das connecten klappt auf jeden fall schon mal, das habe ich schon
testen können.

Gruss,

Sinnie

Nachtrag:

Die Tabelle Writers wird vom Skript sogar angelegt.

Code: Alles auswählen

mysql> SHOW TABLES;
+-------------------+
| Tables_in_testdb |
+-------------------+
| Writers           |
+-------------------+
1 rows in set (0.00 sec)
Nachtrag2:
Und natürlich mit Inhalt :? Aber warum dann die Warnung? :K
Du weißt das du vergessen hast einzukaufen, wenn du dich morgens mit Geschirrspülmittel duscht.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

eine Warnung ist eine *Mitteilung* an dich, sonst nix. Das Python-Modul teilt dir damit lediglich mit, dass es die Tabelle nicht gibt und läuft dann weiter.

Es kann ja durchaus Anwendungsfälle geben, wo man wissen will, ob was gelöscht wurde oder nicht. Ob man die Warning im MySQLdb-Modul unterdrücken kann müsstest du mal in der Doku nachlesen.

Gruß, noisefloor
Sinnentlehrt
User
Beiträge: 67
Registriert: Mittwoch 30. Januar 2013, 22:32

Ich denke das ich die Fehlermeldung in Python umlenken werde. Dieses str out ding, glaub ich.
Du weißt das du vergessen hast einzukaufen, wenn du dich morgens mit Geschirrspülmittel duscht.
BlackJack

@Sinnentlehrt: Und warum liest Du nicht die Dokumentation und machst es richtig? Da steht dass das `warnings`-Modul verwendet wird. Und in der Dokumentation zu *dem* Modul steht wie man Warnungen entweder Unterdrücken oder als Ausnahmen auslösen lassen kann. Das lässt sich sogar ziemlich fein steuern.
Antworten