Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Der Aufruf von DATE_FORMAT() in MySQL von Django aus schlägt fehl

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.)