Considere crear la consulta dinámicamente para asegurarse de que la cantidad de marcadores de posición coincida con su tabla y el formato de archivo CSV. Entonces solo es cuestión de asegurarse de que su tabla y el archivo CSV sean correctos, en lugar de verificar que haya escrito suficiente ?
marcadores de posición en su código.
El siguiente ejemplo asume
- El archivo CSV contiene nombres de columna en la primera línea
- La conexión ya está construida
- El nombre del archivo es
test.csv
- El nombre de la tabla es
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 los nombres de las columnas no están incluidos en el archivo:
...
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()