我在漫长复杂的SELECT语句中发现了一个偷偷摸摸的逗号
在python脚本中,我有一行像
con.execute("SELECT STR_TO_DATE(date_recieved, '%%m/%%d/%%Y') from raw_table")
然而,这使MySQLdb不满意,并抱怨:
File "/lib/python2.6/site-packages/MySQL_python-1.2.4-py2.6-linux-x86_64.egg/MySQLdb/cursors.py",
line 183, in execute
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
我不想要任何争论。我想把'%'传递给MySQL(我真的想要'%m /%d /%Y',但试图逃避百分比:%%)。
答案 0 :(得分:3)
您没有为查询提供任何参数,因此%
会被字面上对待。
简单:
con.execute("SELECT STR_TO_DATE(date_recieved, '%m/%d/%Y') from raw_table")
应该有用。
传递空参数元组并转义百分比也应该有效:
con.execute("SELECT STR_TO_DATE(date_recieved, '%%m/%%d/%%Y') from raw_table", ())
这不是特定于MySQLdb的。
此:
print "a %s %d"
有效 - 百分号按字面解释,而这个:
print "a %s %d" % ()
不