Envisagez de créer la requête de manière dynamique pour vous assurer que le nombre d'espaces réservés correspond à votre table et au format de fichier CSV. Ensuite, il suffit de s'assurer que votre table et votre fichier CSV sont corrects, au lieu de vérifier que vous avez tapé suffisamment de ?
espaces réservés dans votre code.
L'exemple suivant suppose
- Le fichier CSV contient les noms de colonne sur la première ligne
- La connexion est déjà établie
- Le nom du fichier est
test.csv
- Le nom de la table est
MyTable
- Python 3
...
with open ('test.csv', 'r') as f:
reader = csv.reader(f)
columns = next(reader)
query = 'insert into MyTable({0}) values ({1})'
query = query.format(','.join(columns), ','.join('?' * len(columns)))
cursor = connection.cursor()
for data in reader:
cursor.execute(query, data)
cursor.commit()
Si les noms de colonnes ne sont pas inclus dans le fichier :
...
with open ('test.csv', 'r') as f:
reader = csv.reader(f)
data = next(reader)
query = 'insert into MyTable values ({0})'
query = query.format(','.join('?' * len(data)))
cursor = connection.cursor()
cursor.execute(query, data)
for data in reader:
cursor.execute(query, data)
cursor.commit()