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
,:2
etc. (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).