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