Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation de Python pour insérer rapidement de nombreuses colonnes dans Sqlite\Mysql

Par "Newdata est une liste de x colonnes", j'imagine que vous voulez dire x uplets , depuis lors, vous continuez à parler de "le premier 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 nombre que vous voulez (et tous les tuples feraient mieux d'avoir le même nombre d'éléments, sinon executemany va échec !), l'idée générale de la réponse de @Nathan est juste :créez 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 méthode d'insertion de @ Nathan convient à la plupart des versions de Python 2.any, mais si vous avez la version 2.6 ou supérieure,

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

est actuellement préféré (il fonctionne également dans Python 3.any).

Enfin,

csr.executemany(sql, Newdata)

fera ce que vous désirez. N'oubliez pas de valider la transaction une fois que vous avez terminé !-)