2009-06-06 4 views
0

La base de données est PostgreSQL. Lorsque je tente d'exécuter une requête avec des paramètres, tels que celui-ciPourquoi une erreur se produit-elle lorsque j'essaie d'exécuter une requête avec des paramètres dans postgreSQL?

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 dans une coquille de postgreSQL, je reçois l'erreur de syntaxe. Si j'omets la partie 'E', ça fonctionne. Que devrais-je en faire?

Répondre

2

Ozgur,

Essayez

to_tsquery(%s) 

au lieu de

to_tsquery('%s') 
+0

Merci! C'est embarrassant, je pense que je ferais mieux de prendre des vacances dès que possible :) – shanyu

+0

Aurait été plus embarrassant si j'avais mal deviné ... Je suis plus habitué à la syntaxe SQL Server. ;) –

0

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

+0

La substance E est mis là par Django ORM , Je viens de passer une chaîne. – shanyu

Questions connexes