Rozważ dynamiczne tworzenie zapytania, aby upewnić się, że liczba symboli zastępczych jest zgodna z formatem tabeli i pliku CSV. Wtedy wystarczy tylko upewnić się, że tabela i plik CSV są poprawne, zamiast sprawdzać, czy wpisałeś wystarczającą ilość ?
symbole zastępcze w kodzie.
Poniższy przykład zakłada
- Plik CSV zawiera nazwy kolumn w pierwszym wierszu
- Połączenie jest już zbudowane
- Nazwa pliku to
test.csv
- Nazwa tabeli to
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()
Jeśli w pliku nie ma nazw kolumn:
...
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()