MySQL Insert mit Dictionarys
Verfasst: Mittwoch 4. Juni 2014, 09:11
Guten Morgen,
ich habe ein Dictionary mit 11 Einträgen und dieses soll in eine MySQL Tabelle eingetragen werden. Dabei sind die Keys == Spaltenname. An sich ist es ja kein Problem:
Allerdings ist das ganze bei 11 Spalten eine verdammt lange Query und auch sehr Fehleranfällig, wenn man mal eine Spalte hinzufügt oder wegnimmt. Außerdem bin ich mir sicher, das es eine schönere Methode gibt.
Bei Google habe ich dann noch dies hier gefunden:
Dort bekomme ich dann aber den TypeError:
Traceback (most recent call last):
File "function.py", line 34, in start
c.execute(qry, infos.keys() + infos.values())
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
ich habe ein Dictionary mit 11 Einträgen und dieses soll in eine MySQL Tabelle eingetragen werden. Dabei sind die Keys == Spaltenname. An sich ist es ja kein Problem:
Code: Alles auswählen
cursor.execute("insert into tabelle (zeilenname1, zeilenname2, usw) values (%s, %s, usw)", (dic["zeilenname1"], dic["zeilenname2"], usw))
Bei Google habe ich dann noch dies hier gefunden:
Code: Alles auswählen
qmarks = ','.join('?' * len(dic))
qry = "insert into tabelle (%s) values (%s)" % (qmarks, qmarks)
c.execute(qry, dic.keys() + dic.values())
Traceback (most recent call last):
File "function.py", line 34, in start
c.execute(qry, infos.keys() + infos.values())
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 159, in execute
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting