Considere criar a consulta dinamicamente para garantir que o número de espaços reservados corresponda à tabela e ao formato de arquivo CSV. Em seguida, é apenas uma questão de garantir que sua tabela e arquivo CSV estejam corretos, em vez de verificar se você digitou o suficiente
?
espaços reservados em seu código. O exemplo a seguir assume
- O arquivo CSV contém nomes de colunas na primeira linha
- A conexão já foi criada
- O nome do arquivo é
test.csv
- O nome da tabela é
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()
Se os nomes das colunas não estiverem incluídos no arquivo:
...
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()