在MySQLdb中转义%

时间:2013-03-27 21:39:45

标签: python mysql mysql-python

我在漫长复杂的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',但试图逃避百分比:%%)。

1 个答案:

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