Mysql
 sql >> Base de données >  >> RDS >> Mysql

L'appel de DATE_FORMAT() dans MySQL à partir de Django échoue

Je suppose que le problème est avec le signe de pourcentage (% ) dans le texte de la requête. (N'est-ce pas un espace réservé de variable de liaison dans Django ?) si nous devions utiliser une variable de liaison, cela ne ressemblerait-il pas à ceci ?

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

Je pense que Django analyse peut-être votre texte SQL et rencontre %w et s'attendant à ce que ce soit une variable de liaison. Soit ça, soit il exécute un sprintf fonction de style et rencontrant le %w et s'attend à remplacer cet espace réservé par une valeur d'argument.

(Je n'ai pas testé ; ce n'est donc qu'une idée, juste une supposition.)

Comme solution de contournement, vous doublez peut-être les signes de pourcentage, de la même manière que nous obtenons % littéraux via un sprintf :

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

Si cela ne fonctionne pas, c'est peut-être une barre oblique inverse, de la même manière que nous échappons des caractères dans une expression régulière :

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

(Ou, vous devrez peut-être doubler les barres obliques inverses. Ce ne sont que des suppositions basées sur les conventions utilisées par d'autres logiciels.)