Python MyQLdb执行将不接受参数

我发现了几个类似的问题,但似乎都无法解释这里发生的情况。


代码:


print type(price)

print type(sale_price)

print type(url)

price=0.0

sale_price=0.0

url="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 % args

TypeError: 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 % args

TypeError: not all arguments converted during string formatting

该异常还会产生大量的StackOverflow答案,但没有一个真正揭示了这里出了什么问题。我确实尝试使用元组而不是列表作为第二个参数来使用两个样式占位符执行,但仍然会得到相同的异常。


湖上湖
浏览 149回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python