Python: ValueError: unsupported format character ''' (0x27) at index 1

1345 ワード

今日pythonプログラムを書き、pymysqlでデータベースからデータを問合せ、likeファジイマッチングを使用してエラーを報告します.
query_string = "SELECT DATE_FORMAT(movie.publish_time,'%Y-%m-%d'),movie.movie_name FROM movie WHERE movie.publish_time > now() and movie.media_type = 'movie' and movie.movie_type like '%%%%%s%%%%';"
query_param = ["  "]

実行
count = cur.execute(query_string, query_param)

誤報
Python: ValueError: unsupported format character ''' (0x27) at index 1

ソリューション:1)
query_param = ['%%%s%%' % '  ']
query_string = "SELECT left(movie.publish_time,10),movie.movie_name FROM movie WHERE movie.publish_time > now() and movie.media_type = 'movie' and movie.movie_type like %s;"

count = cur.execute(query_string, query_param)

2)
query_param = ['  ']
query_string = "SELECT left(movie.publish_time,10),movie.movie_name FROM movie WHERE movie.publish_time > now() and movie.media_type = 'movie' and movie.movie_type like '%%%s%%';"

count = cur.execute(query_string % tuple(query_param))

説明:1)MySQL DBは%演算子を使用してクエリにパラメータを格納するため、クエリ文字列内の任意の%文字はパラメータの説明子の開始として解釈されます.2)%pythonの3つの特殊な記号(%s,%dはそれぞれ文字列プレースホルダと数値プレースホルダを表す.