python - 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']))
解决方案
不得对 SQL 查询使用字符串插值。db-api 将为您进行正确的参数替换 - 用%
逗号替换它。
cursor.execute('SELECT.... ', (product['id'],product['created_at'...))
# ^
推荐阅读
- javascript - javascript中的合并数组对象
- node.js - 打字稿找不到名称'提供'.ts(2304)错误app.module.ts
- angular - 我该如何解决错误 - “对象可能是'null'”?
- node.js - npm i 命令未安装软件包
- ms-access - 执行直到循环不向表中的所有记录执行电子邮件
- flutter - 只有一页的透明状态栏
- matlab - 在 x 轴上从零开始而不是从 1 开始茎图
- keras - 神经网络不能泛化高度不平衡的数据
- anychart - y 轴上的股票图表值正在四舍五入
- rsocket - RSocket Net客户端请求流路由元数据到spring boot @MessageMapping路由