Erwägen Sie, die Abfrage dynamisch zu erstellen, um sicherzustellen, dass die Anzahl der Platzhalter mit Ihrem Tabellen- und CSV-Dateiformat übereinstimmt. Dann müssen Sie nur sicherstellen, dass Ihre Tabelle und CSV-Datei korrekt sind, anstatt zu überprüfen, ob Sie genug ?
eingegeben haben Platzhalter in Ihrem Code.
Das folgende Beispiel geht von
aus- CSV-Datei enthält Spaltennamen in der ersten Zeile
- Verbindung ist bereits aufgebaut
- Dateiname ist
test.csv
- Tabellenname ist
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()
Wenn Spaltennamen nicht in der Datei enthalten sind:
...
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()