Python:ValueError:索引1处不支持的格式字符'''(0x27)

use*_*746 25 python mysql mysql-python

我正在尝试执行查询以使用MySQL通过Python搜索数据库中的3个表.每次我尝试执行以下字符串作为查询时,它会给我一个关于字符串中连接的错误.

"SELECT fileid FROM files WHERE description LIKE '%" + search + "%' OR filename LIKE '%" + search + "%' OR uploader LIKE '%" + search + "%' ORDER BY fileid DESC"
Run Code Online (Sandbox Code Playgroud)

这是它给我的错误:

ValueError: unsupported format character ''' (0x27) at index 1
Run Code Online (Sandbox Code Playgroud)

如果我删除它要求的字符,那么我还必须删除%,这会阻止查询实际正常工作.我能做些什么来解决这个问题,因为我对Python很陌生.

谢谢,克里斯

Poc*_*chi 64

看起来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)
Run Code Online (Sandbox Code Playgroud)

  • 确切地说,MySQLdb使用**%**运算符将参数放入查询中,因此查询字符串中的任何单个**%**字符都被解释为参数说明符的开头.要防止这种情况,请在查询中使用_ %% _ for _%_.另请参阅相应的文档:[字符串格式](http://docs.python.org/2/library/stdtypes.html#string-formatting) (3认同)