为了账号安全,请及时绑定邮箱和手机立即绑定

Python MyQLdb执行将不接受参数

Python MyQLdb执行将不接受参数

湖上湖 2021-04-05 12:13:10
我发现了几个类似的问题,但似乎都无法解释这里发生的情况。代码:print type(price)print type(sale_price)print type(url)price=0.0sale_price=0.0url="asdf"dbc.execute("UPDATE logTable SET price=%f, salePrice=%f, modified=NOW() WHERE url=%s", [price, sale_price, url])输出:<type 'float'><type 'float'><type 'str'>Traceback (most recent call last):  File "./scrape.py", line 102, in <module>    dbc.execute("UPDATE logTable SET price=%f, salePrice=%f, modified=NOW() WHERE url=%s", [price, sale_price, url])  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 210, in execute    query = query % argsTypeError: float argument required, not str插值字符串中没有杂散的%字符。参数的数量与占位符的数量匹配。类型肯定是正确的。我尝试使用?占位符,而不是printf样式的占位符,即使文档建议两者都受支持。那给出了一个不同的例外:Traceback (most recent call last):  File "./scrape.py", line 102, in <module>    dbc.execute("UPDATE logTable SET price=?, salePrice=?, modified=NOW() WHERE url=?", [price, sale_price, url])  File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 210, in execute    query = query % argsTypeError: not all arguments converted during string formatting该异常还会产生大量的StackOverflow答案,但没有一个真正揭示了这里出了什么问题。我确实尝试使用元组而不是列表作为第二个参数来使用两个样式占位符执行,但仍然会得到相同的异常。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 146 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信