Pourquoi est-ce que je reçois une erreur lorsque je tente d'exécuter une requête avec des paramètres dans postgreSQL?

StackOverflow https://stackoverflow.com/questions/960130

  •  12-09-2019
  •  | 
  •  

Question

Le db est PostgreSQL. Lorsque je tente d'exécuter une requête avec des paramètres, tels que celui-ci

cursor.execute("""
    SELECT u.username, up.description, 
        ts_rank_cd(to_tsvector(coalesce(username,'')|| coalesce(description,'')) , to_tsquery('%s')) as rank

        FROM auth_user u INNER JOIN pm_core_userprofile up on u.id = up.user_id
        WHERE to_tsvector(coalesce(username,'')|| coalesce(description,'')) @@ to_tsquery('%s')
        ORDER BY rank DESC;
    """, ["hello","hello"])

Django se plaint d'un ProgrammingError , ajoutant erreur de syntaxe ou à proximité du paramètre (dans cet exemple, " bonjour "). Voici la partie de Django généré instruction SQL que l'erreur provient de:

to_tsquery('E'hello'')

Même si je copier-coller à une coquille postgreSQL, je reçois l'erreur de syntaxe. Si je laisse de côté la partie « E », cela fonctionne. Que dois-je en faire?

Était-ce utile?

La solution

Ozgur,

Essayez

to_tsquery(%s)

au lieu de

to_tsquery('%s')

Autres conseils

Je crois que vous manque un 'après la E.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top