Gemäß der Python-Datenbankspezifikation in PEP 249
, hängt das Format, das in einer Abfrage verwendet wird, um anzuzeigen, wo die Parameter eingefügt werden sollen, vom paramstyle ab Mitglied des Datenbankmoduls:
- wenn es
qmarkist , verwenden Sie?(Fragezeichen) - wenn es
numericist , verwenden Sie:1,:2usw. (numerisch, Positionsstil) - wenn es
namedist , verwenden Sie:name(benannter Stil) - wenn es
formatist , verwenden Sie%s(ANSI C printf-Formatcodes) - wenn es
pyformatist , verwenden Sie%(name)s(Erweiterte Python-Formatcodes)
AFAIR, MySQLdb verwendet format , also sollten Sie Ihr ? ersetzen mit %s .(Wenn MySQLdb vorbereitete Anweisungen korrekt verwenden würde, wäre es qmark und ? war der richtige Weg.)