Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fügen Sie mit Python schnell viele Spalten in Sqlite\Mysql ein

Mit "Neue Daten ist eine Liste von x Spalten" meinen Sie vermutlich x Tupel , seitdem spricht man immer noch vom "ersten Tupel". Wenn Newdata ist eine Liste von Tupeln, y = len(Newdata[0]) ist die Anzahl der Elemente im ersten dieser Tupel.

Angenommen, das ist die gewünschte Anzahl (und alle Tupel sollten besser die gleiche Anzahl von Elementen haben, sonst executemany wird scheitern!), ist die allgemeine Idee in @Nathans Antwort richtig:Erstellen Sie die Zeichenfolge mit der entsprechenden Anzahl von durch Kommas getrennten Fragezeichen:

holders = ','.join('?' * y)

fügen Sie es dann in den Rest der SQL-Anweisung ein. @Nathans Methode zum Einfügen ist für die meisten Versionen von Python 2.any richtig, aber wenn Sie 2.6 oder besser haben,

sql = 'INSERT INTO testdata VALUES({0})'.format(holders)

wird derzeit bevorzugt (funktioniert auch in Python 3.any).

Schließlich,

csr.executemany(sql, Newdata)

wird tun, was du willst. Denken Sie daran, die Transaktion zu bestätigen, wenn Sie fertig sind!-)