Escape-имена столбцов, записывающие в SQL с помощью python,pyodbc из csv
Я довольно новичок в кодировании и застрял. Я тяну отчет через API, который дает мне файл.csv. Я хочу вставить это в базу данных SQL, но у меня возникли проблемы.
Мой текущий код выглядит так:
ридер - это декодированный CSV-файл.
columns = next(reader,None)
query = "INSERT INTO table({0}) VALUES ({1})"
query = query.format(','.join(columns),','.join('?'*len(columns)))
cursor = cnxn.cursor()
cursor.execute(query, columns)
for data in reader:
cursor.execute(query, data)
cursor.commit()
Когда я запускаю код, я получаю эту ошибку:
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft] [Драйвер ODBC 13 для SQL Server][SQL Server] Неверный синтаксис рядом с ключевым словом" Группа ". (156) (SQLExecDirectW)")
Я думаю, что проблема в том, что мои столбцы:
Date | Advertiser | Campaign | Ad Group | etc.
И кажется, что, возможно, SQL распознает "Группу" "Группы объявлений" как переменную.
Есть идеи? Спасибо.
1 ответ
Как уже упоминалось в комментарии @ZLK, вам необходимо заключить имена столбцов в квадратные скобки. Это сделает свое дело:
query = query.format('[{0}]'.format('], ['.join(columns)),','.join('?'*len(columns)))