sql >> Databasteknik >  >> RDS >> Mysql

Använd Python för att snabbt infoga många kolumner i Sqlite\Mysql

Med "Nydata är en lista med x kolumner" antar jag att du menar x tuplar , sedan dess fortsätter du att tala om "den första tupeln". Om Newdata är en lista över tupler, y = len(Newdata[0]) är antalet föremål i den första av dessa tupler.

Förutsatt att det är numret du vill ha (och alla tuplar hade hellre samma antal objekt, annars executemany kommer misslyckas!), är den allmänna idén i @Nathans svar rätt:bygg strängen med lämpligt antal kommaseparerade frågetecken:

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

infoga den sedan i resten av SQL-satsen. @Nathans sätt att infoga är rätt för de flesta Python 2. alla versioner, men om du har 2.6 eller bättre,

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

är för närvarande att föredra (det fungerar även i Python 3.any).

Slutligen,

csr.executemany(sql, Newdata)

kommer att göra vad du vill. Kom ihåg att genomföra transaktionen när du är klar!-)



  1. hur man tar bort dubbletter av värden i mysql-tabellen

  2. Hur man skriver UTF-8-tecken med hjälp av bulkinsert i SQL Server?

  3. MySQL uppdaterar specifika JSON-objekt i en array

  4. DATEDIFF_BIG() Exempel i SQL Server