Selon la spécification de base de données Python dans PEP 249
, le format utilisé dans une requête pour montrer où insérer les paramètres dépend du paramstyle membre du module base de données :
- si c'est
qmark, utilisez?(point d'interrogation) - si c'est
numeric, utilisez:1,:2etc. (numérique, style positionnel) - s'il est
named, utilisez:name(style nommé) - si c'est le
format, utilisez%s(Codes de format ANSI C printf) - si c'est
pyformat, utilisez%(name)s(Codes de format étendu Python)
AFAIR, MySQLdb utilise le format , vous devez donc remplacer votre ? avec %s .(Si MySQLdb utilisait correctement les instructions préparées, ce serait qmark et ? était la bonne voie à suivre.)