Python: ValueError: carácter de formato no admitido ” ‘(0x27) en el índice 1

Estoy intentando ejecutar una consulta para buscar 3 tablas en una base de datos usando MySQL a través de Python. Cada vez que bash ejecutar la siguiente cadena como una consulta, aparece un error sobre la concatenación en la cadena.

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

Este es el error que me da:

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

Si elimino el carácter que solicita, también tengo que eliminar el%, lo que impide que la consulta funcione correctamente. ¿Qué puedo hacer para solucionar esto, ya que soy bastante nuevo en Python?

Gracias kris

Parece que python está interpretando el% como un carácter de formato similar a printf. Intenta usar %%?

 "SELECT fileid FROM files WHERE description LIKE '%%%s%%' OR filename LIKE '%%%s%%' OR uploader LIKE '%%%s%%' ORDER BY fileid DESC" % (search, search, search) 

Puedes probar así:

 SELECT fileid FROM files WHERE description LIKE '%%%%%s%%%%' OR filename LIKE '%%%%%s%%%%' OR uploader LIKE '%%%%%s%%%%' ORDER BY fileid DESC" % (search, search, search) 

Mi solución:

 query = """SELECT id, name FROM provice WHERE name LIKE %s""" cursor.execute(query, '%%%s%%' % name) 

Creo que es una forma fácil de solucionar este problema!

Solo para usted información: probé la solución de @Pochi hoy, en Python 3.6, y por alguna razón provocó un comportamiento no esperado. Tenía dos y tres argumentos para la cadena de formato, así que al final estaba:

 % (Search, Search) 

Mi cadena (“búsqueda”) comenzó con una “S” superior. Recibí el mensaje de error:

 ValueError: unsupported format character 'S' (0x53) at index 113 

Cambié de mayúsculas a minúsculas, y el error fue:

 TypeError: not enough arguments for format string 

Luego puse mis argumentos dentro de doble %% al principio y al final, y funcionó. Así que mi código parecía:

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

Otra solución sería la provista por @Alice Yuan. Ella acaba de duplicar el porcentaje canta, y funciona.