pyodbc中's'附近的语法不正确

时间:2018-06-27 13:11:50

标签: python sql json sql-server pyodbc

有时,当我尝试向数据库中插入数据时,会随机出现此错误。我使用request.get并解析JSON数据来获取数据。

这是我得到的错误:

  

pyodbc.ProgrammingError :(“ 42000”,“ [42000] [Microsoft] [ODBC驱动程序17   for SQL Server] [SQL Server]“ s”附近的语法不正确。 (102)   (SQLExecDirectW); [42000] [Microsoft] [用于SQL的ODBC驱动程序17   服务器] [SQL Server]字符串后的右引号   ')'。 (105)“)

这是我的代码:

for product in parsed['products']:
                cursor.execute("INSERT INTO dbo.producten (productid, datum_toegevoegd, naam, prijs_excl, prijs_incl, gewicht) VALUES ('%s','%s','%s','%s','%s','%s')" %(product['id'],product['created_at'], product['nl']['title'],product['price_excl'],product['price_incl'],product['weight']))

2 个答案:

答案 0 :(得分:3)

不得对SQL查询使用字符串插值。 db-api将为您进行正确的参数替换-用逗号替换%

cursor.execute('SELECT.... ', (product['id'],product['created_at'...))
#                           ^

答案 1 :(得分:1)

cursor.execute('SELECT.... product = ?', (value_for_product)) 

适用于python 3。^