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!-)