Secondo la specifica del database Python in PEP 249
, il formato utilizzato in una query per mostrare dove inserire i parametri dipende da paramstyle membro del modulo database:
- se è
qmark, usa?(punto interrogativo) - se è
numeric, usa:1,:2ecc. (stile numerico, posizionale) - se è
named, usa:name(stile con nome) - se è
format, usa%s(codici formato ANSI C printf) - se è
pyformat, usa%(name)s(Codici formato esteso Python)
AFAIR, MySQLdb usa il format , quindi dovresti sostituire il tuo ? con %s .(Se MySQLdb utilizzasse correttamente le istruzioni preparate, sarebbe qmark e ? era la strada giusta.)