42

Python で MySQL を使用して、データベース内の 3 つのテーブルを検索するクエリを実行しようとしています。次の文字列をクエリとして実行しようとするたびに、文字列の連結に関するエラーが発生します。

"SELECT fileid FROM files WHERE description LIKE '%" + search + "%' OR filename LIKE '%" + search + "%' OR uploader LIKE '%" + search + "%' ORDER BY fileid DESC"

これは私に与えるエラーです:

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

要求された文字を削除すると、% も削除する必要があり、クエリが実際に正しく機能しなくなります。私はPythonが初めてなので、これを修正するにはどうすればよいですか。

ありがとう、クリス

4

5 に答える 5

97

Python が % を printf のようなフォーマット文字として解釈しているようです。%% を使用してみてください。

"SELECT fileid 
FROM files 
WHERE description LIKE '%%%s%%' 
    OR filename LIKE '%%%s%%' 
    OR uploader LIKE '%%%s%%' 
    ORDER BY fileid DESC" % (search, search, search)
于 2012-07-27T21:54:05.470 に答える