[gelöst] TypeError: not all arguments converted during...
Verfasst: Montag 11. Februar 2008, 11:23
Hallo Leute,
bin ziemlich ratlos. Habe ein Skript, welches auch schon funktionierte. Leider musste ich hinterher noch Änderung an der Datenbank vornehmen, Spalten Hinzufügen und und Inhalt der Spalten ist ein wenig anders. Meine ID Spalten sind nun CHAR und keine INT mehr, aber alles egal. Hab ich auch geändert und erstelle nun die Datenbank (ist eh alles noch in der Testphase) neu. Wollte dmait nur sagen, dass das Skript schon funktionierte.
Die Inhalte der Tabellen der Datenbank (zumindest ein Teil) liegt in Form von CSVs vor und die müssen NUR eingelesen werden. Für 2 Tabellen funktioniert das auch, für die 3. nicht. Kommt oben genannte Fehlermeldung.
Ich hab mir alles genau angeschaut, weil diese Fehlermeldung hatte ich davor auch schon mal, da endete jede Zeile in der csv mit dem Trennzeichen. Hatte es weggenommen und hatte danach dann keine Probleme mehr.
Hier die Ausschnitte aus dem Code:
Erstellen der Tabelle (funktioniert)
"Fülllen der Tabelle"
Hatte dann schon Probehalber mal jede Zeile einzeln eingelesen, und nicht mit executemany. Vor dem Einlesen habe ich mir dann jede ZEile einzeln ausgeben lassen. Diese Zeile (es brach sofort ab) sah so aus:
Ich nehme an, es ist nur wieder irgendein ganz einfacher Schusselfehler, den ich nicht sehe...ich suche inzwischen aber schon wieder eine Stunde 
bin ziemlich ratlos. Habe ein Skript, welches auch schon funktionierte. Leider musste ich hinterher noch Änderung an der Datenbank vornehmen, Spalten Hinzufügen und und Inhalt der Spalten ist ein wenig anders. Meine ID Spalten sind nun CHAR und keine INT mehr, aber alles egal. Hab ich auch geändert und erstelle nun die Datenbank (ist eh alles noch in der Testphase) neu. Wollte dmait nur sagen, dass das Skript schon funktionierte.
Die Inhalte der Tabellen der Datenbank (zumindest ein Teil) liegt in Form von CSVs vor und die müssen NUR eingelesen werden. Für 2 Tabellen funktioniert das auch, für die 3. nicht. Kommt oben genannte Fehlermeldung.
Ich hab mir alles genau angeschaut, weil diese Fehlermeldung hatte ich davor auch schon mal, da endete jede Zeile in der csv mit dem Trennzeichen. Hatte es weggenommen und hatte danach dann keine Probleme mehr.
Hier die Ausschnitte aus dem Code:
Erstellen der Tabelle (funktioniert)
Code: Alles auswählen
indizes = 'create table IF NOT EXISTS Indikatoren (ID CHAR(5) PRIMARY KEY,\
kat CHAR(2),\
CALC_CAT CHAR(2),\
NAME VARCHAR(250),\
Berechnung VARCHAR(250),\
Einheit Varchar(6),\
FOREIGN KEY(kat) REFERENCES \
Kategorien(KAT) \
ON DELETE CASCADE)\
ENGINE = InnoDB'
cursor.execute(indizes)
Code: Alles auswählen
def fill_tables(f, fill):
reader_csv = csv.reader(f, delimiter=';')
fill[1](reader_csv)
def indicators(reader_csv):
try:
cursor.executemany('INSERT INTO Indikatoren(\
ID,kat,CALC_CAT,NAME,Berechnung,Einheit)\
values(%s,%s,%s,%s,%s)',
reader_csv)
db.commit()
except MySQLdb.IntegrityError:
print "Eintrag gibt es schon"
#----------------
f = file(csv_file)
fill_tables(f,fill)
Code: Alles auswählen
['X1Y', 'Z', 'X', 'Flache in ha', 'Flache 1234', 'ha']
