2

我在冗长复杂的 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' 但尝试转义百分比:%%)。

4

1 回答 1

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" % () 

没有。

于 2013-03-27T22:16:04.140 回答