Mysql
 sql >> Database >  >> RDS >> Mysql

La chiamata a DATE_FORMAT() in MySQL da Django non riesce

La mia ipotesi è che il problema sia con il segno di percentuale (% ) nel testo della query. (Non è un segnaposto di variabile bind in Django?) es. se dovessimo usare una variabile bind, non sarebbe qualcosa del genere?

SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;

Penso che forse Django sta scansionando il tuo testo SQL e sta incontrando %w e aspettandosi che sia una variabile di collegamento. O quello, o sta eseguendo un sprintf funzione di stile e incontrando il %w e prevedendo di sostituire quel segnaposto con un valore di argomento.

(Non ho testato, quindi questa è solo un'idea, solo un'ipotesi.)

Come ipotesi per una soluzione alternativa, forse raddoppi i segni di percentuale, lo stesso che otteniamo % letterali tramite uno sprintf:

  query("SELECT ... ,'%%w') ...");

Se non funziona, allora forse è un carattere barra rovesciata, lo stesso che sfuggiamo ai caratteri in un'espressione regolare:

  query("SELECT ... ,'\%w') ...");

(Oppure potresti dover raddoppiare le barre inverse. Queste sono solo ipotesi basate su convenzioni utilizzate da altri software.)