Mit Python können Sie viele Spalten in Sqlite \ Mysql einfügen

Wenn Newdata eine Liste von x Spalten ist, wie bekomme die Anzahl eindeutige Spalten – Anzahl der Mitglieder des ersten Tupels. (Len ist nicht wichtig.) Ändern Sie die Anzahl der "?" Um Spalten zu platzieren und mit der folgenden Anweisung einzufügen.

csr = con.cursor() csr.execute('Truncate table test.data') csr.executemany('INSERT INTO test.data VALUES (?,?,?,?)', Newdata) con.commit() 

  • Python codierung mysql :( [duplizieren]
  • Schreiben in MySQL-Datenbank mit Pandas mit SQLAlchemy, to_sql
  • Python & mysql: nicht unterstützter Operanden Typ (s) für -: 'int' und 'tupel'
  • Mysql Fehler aus Macports: vermisst mysqld.sock
  • Schwerwiegender Fehler: #include <stdio.h> generiert nach "pip install mysql-python" -Befehl
  • Wie könnte ich asynchrone MySQL Operationen in Tornado mit Python3.4?
  • 2 Solutions collect form web for “Mit Python können Sie viele Spalten in Sqlite \ Mysql einfügen”

    Von "Newdata ist eine Liste von x Spalten", ich stelle mir vor, dass du x Tupel meinst, seitdem sprichst du weiterhin von "dem ersten Tupel". Wenn Newdata eine Liste von Tupeln ist, ist y = len(Newdata[0]) die Anzahl der Elemente in der ersten dieser Tupel.

    Angenommen, das ist die Nummer, die du willst (und alle Tupel hätten besser die gleiche Anzahl von Artikeln haben, sonst wird es executemany , executemany geht !), Die allgemeine Idee in @ Nathans Antwort ist richtig: baue den String mit der entsprechenden Anzahl von kommagetrennten Fragezeichen:

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

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

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

    Ist derzeit bevorzugt (es funktioniert auch in Python 3.any).

    Endlich,

     csr.executemany(sql, Newdata) 

    Wird tun was du willst Denken Sie daran, die Transaktion zu begehen, sobald Sie fertig sind! -)

    Wenn Sie die maximale Anzahl von Artikeln in allen Elementen in Newdata , ist es einfach:

     num_columns = max(len(t) for t in Newdata) 

    Das nimmt natürlich Python 2,5 oder mehr an.

    Nicht, dass ich sicher bin, was du versuchst, würde funktionieren, aber die Insert-Anweisung würde dann werden:

    Sql = "INSERT INTO test.data VALUES (% s)"% "," beitreten ('?' * Num_columns)

    Python ist die beste Programmiersprache der Welt.