De acordo com a especificação do banco de dados Python em PEP 249 , o formato usado em uma consulta para mostrar onde inserir os parâmetros depende do
paramstyle
membro do módulo de banco de dados:- se for
qmark
, use?
(ponto de interrogação) - se for
numeric
, use:1
,:2
etc. (numérico, estilo posicional) - se for
named
, use:name
(estilo nomeado) - se for
format
, use%s
(códigos de formato ANSI C printf) - se for
pyformat
, use%(name)s
(Códigos de formato estendido do Python)
AFAIR, MySQLdb usa
format
, então você deve substituir seu ?
com %s
.(Se o MySQLdb usasse corretamente as instruções preparadas, seria qmark
e ?
era o caminho certo a seguir.)