Par "Newdata est la liste des colonnes de x", je suppose que vous voulez dire x
tuples, depuis lors, vous continuez à parler de "la première tuple". Si Newdata
est une liste de tuples, y = len(Newdata[0])
est le nombre d'éléments dans le premier de ces tuples.
En supposant que c'est le numéro que vous voulez (et tous les tuples il vaut mieux avoir le même nombre d'éléments, sinon executemany
va échouer!), L'idée générale @ réponse de Nathan est juste: construire la chaîne avec le nombre approprié de points d'interrogation séparés par des virgules:
holders = ','.join('?' * y)
puis insérez-le dans le reste de l'instruction SQL. @ La manière de Nathan à insérer est bon pour la plupart des versions Python 2.Toutes, mais si vous avez 2,6 ou mieux,
sql = 'INSERT INTO testdata VALUES({0})'.format(holders)
est actuellement préférée (il fonctionne aussi en Python 3.Toute).
Enfin,
csr.executemany(sql, Newdata)
fera ce que vous désirez. N'oubliez pas de valider la transaction une fois que vous avez terminé! -)