首页 > 解决方案 > pyodbc 中“s”附近的语法不正确

问题描述

有时,当我尝试将数据插入数据库时​​,我会随机收到此错误。我使用 request.get 获取数据并解析 JSON 数据。

这是我得到的错误:

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]'s' 附近的语法不正确。(102) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 17 for SQL Server][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']))

标签: pythonsqljsonsql-serverpyodbc

解决方案


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

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

推荐阅读