Ich vermute, dass das Problem mit dem Prozentzeichen (%
) im Abfragetext. (Ist das nicht ein Platzhalter für Bind-Variablen in Django?) z. Wenn wir eine Bind-Variable verwenden würden, würde das nicht etwa so aussehen?
SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;
Ich denke, vielleicht scannt Django Ihren SQL-Text und stößt auf %w
und erwarten, dass dies eine Bindungsvariable ist. Entweder das, oder es läuft ein sprintf
style-Funktion und die Begegnung mit %w
und erwartet, diesen Platzhalter durch einen Argumentwert zu ersetzen.
(Ich habe es nicht getestet; also ist dies nur eine Idee, nur eine Vermutung.)
Als Vermutung für eine Problemumgehung verdoppeln Sie vielleicht die Prozentzeichen, genauso wie wir %-Literale durch einen sprintf:
erhalten query("SELECT ... ,'%%w') ...");
Wenn das nicht funktioniert, dann ist es vielleicht ein Backslash-Zeichen, genauso wie wir Zeichen in einem regulären Ausdruck maskieren:
query("SELECT ... ,'\%w') ...");
(Oder Sie müssen möglicherweise die umgekehrten Schrägstriche verdoppeln. Dies sind nur Vermutungen, die auf Konventionen basieren, die von anderer Software verwendet werden.)