Zgodnie ze specyfikacją bazy danych Pythona w PEP 249
, format użyty w zapytaniu, aby pokazać, gdzie należy wstawić parametry, zależy od paramstyle
członek modułu bazy danych:
- jeśli jest to
qmark
, użyj?
(znak zapytania) - jeśli jest
numeric
, użyj:1
,:2
itp. (numeryczne, styl pozycyjny) - jeśli jest
named
, użyj:name
(nazwany styl) - jeśli jest to
format
, użyj%s
(Kody formatu ANSI C printf) - jeśli jest to
pyformat
, użyj%(name)s
(Kody rozszerzonego formatu Pythona)
AFAIR, MySQLdb używa format
, więc powinieneś zastąpić swój ?
z %s
.(Gdyby MySQLdb poprawnie używała przygotowanych instrukcji, byłoby to qmark
i ?
była właściwą drogą.)