转义使用python写入SQL的列名,来自csv的{pyodbc

时间:2017-08-29 23:10:43

标签: python sql-server csv pyodbc

我是一个很新的编码而且卡住了。我通过api提取报告,它给了我一个.csv文件。我想将它粘贴到SQL数据库中,但遇到了一些麻烦。

我目前的代码如下:

reader是已解码的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 Driver 13   for SQL Server] [SQL Server]关键字' Group'附近的语法不正确。   (156)(SQLExecDirectW)")

我认为问题在于我的专栏是:

Date |  Advertiser |    Campaign |  Ad Group | etc.

似乎SQL可能正在识别" Group" "广告组"作为变量。

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:3)

如@ZLK的评论中所述,您需要将列名括在方括号中。这样就可以了:

query = query.format('[{0}]'.format('], ['.join(columns)),','.join('?'*len(columns)))