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 に答える