经过几个小时的努力并且在互联网上搜索无济于事。我尝试了stackoverflow中的每一个建议(使用'%%',将',''更改为'''''''''''''''''''''''''''''''''''''''''''''''''''''''
代码:
timeList = ['09:31', '09:32', '09:33', '09:34', '09:35']
for z, val in enumerate(timeList):
selectToday = dbConnect.cursor()
selectToday.execute('''SELECT sec_code, date, time, price_nom, price_change_percent, vol \
FROM tab_metrics \
WHERE date = '2013-04-30' \
AND time_format(time, '%H:%i') = %s \
AND price_nom > 1 \
ORDER BY sec_code''', (val))
可能是因为查询中有'%H:%i'(我需要忽略数据库中的秒数)吗?如果是这样,我该如何解决这个问题?谢谢你的帮助。
我在尝试时遇到的各种错误:
ValueError:索引213处不支持的格式字符“H”(0x48)
TypeError:&:'str'和'str'不支持的操作数类型
答案 0 :(得分:0)
如果没有完整的回溯,我无法确定,但我怀疑MySQLdb
正在查询字符串上使用sprintf()
样式字符串插值来插入必要的参数。
在这种情况下,你必须通过将%
更改为%%
来转义应该发送到MySQL的任何timeList = ['09:31', '09:32', '09:33', '09:34', '09:35']
for z, val in enumerate(timeList):
selectToday = dbConnect.cursor()
selectToday.execute("""SELECT sec_code, date, time, price_nom, price_change_percent, vol \
FROM tab_metrics \
WHERE date = '2013-04-30' \
AND time_format(time, '%%H:%%i') = %s \
AND price_nom > 1 \
ORDER BY sec_code""", (val))
个字符,所以......
{{1}}
......应该这样做。