Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Chamar DATE_FORMAT() no MySQL do Django falha


Meu palpite é que o problema é com o sinal de porcentagem (% ) no texto da consulta. (Isso não é um placeholder de variável de ligação no Django?) se fôssemos usar uma variável de ligação, não seria algo assim?
SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;

Eu acho que talvez o Django esteja escaneando seu texto SQL e encontrando %w e esperando que seja uma variável de ligação. Ou isso, ou está executando um sprintf função de estilo e encontrar o %w e esperando substituir esse espaço reservado por um valor de argumento.

(Eu não testei; então isso é apenas uma ideia, apenas um palpite.)

Como um palpite para uma solução alternativa, talvez você dobre os sinais de porcentagem, o mesmo que obtemos % literais por meio de um sprintf:
  query("SELECT ... ,'%%w') ...");

Se isso não funcionar, talvez seja um caractere de barra invertida, o mesmo que escapamos de caracteres em uma expressão regular:
  query("SELECT ... ,'\%w') ...");

(Ou, você pode precisar dobrar as barras invertidas. Essas são apenas suposições baseadas em convenções usadas por outro software.)