Según la especificación de la base de datos de Python en PEP 249
, el formato utilizado en una consulta para mostrar dónde insertar los parámetros depende del paramstyle miembro del módulo de base de datos:
- si es
qmark, usa?(signo de interrogación) - si es
numeric, usa:1,:2etc. (estilo numérico, posicional) - si tiene
named, usa:name(estilo con nombre) - si es
format, usa%s(Códigos de formato de impresión ANSI C) - si es
pyformat, utilice%(name)s(Códigos de formato extendido de Python)
AFAIR, MySQLdb usa format , entonces deberías reemplazar tu ? con %s .(Si MySQLdb usara correctamente declaraciones preparadas, sería qmark y ? era el camino correcto a seguir).