Почему я получаю сообщение об ошибке, когда пытаюсь выполнить запрос с параметрами в postgreSQL?

БД - это 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 жалуется на ProgrammingError, добавляя синтаксическую ошибку в параметре или рядом с ним (в этом примере "hello"). Вот часть сгенерированного Django оператора SQL, из которого возникает ошибка:

to_tsquery('E'hello'')

Даже если я скопирую и вставлю его в оболочку postgreSQL, я получу синтаксическую ошибку. Если я опускаю часть «E», это работает. Что я должен сделать из этого?


person shanyu    schedule 06.06.2009    source источник


Ответы (2)


озгур,

Пытаться

to_tsquery(%s)

вместо

to_tsquery('%s')
person Robert Harvey    schedule 06.06.2009
comment
Спасибо! Это смущает, я думаю, что мне лучше взять отпуск как можно скорее :) - person shanyu; 06.06.2009
comment
Было бы более неловко, если бы я ошибся... Я больше привык к синтаксису SQL Server. ;) - person Robert Harvey; 06.06.2009

Я считаю, что вам не хватает «после E.

person Community    schedule 06.06.2009
comment
Материал E помещается туда Django ORM, я просто передаю строку. - person shanyu; 06.06.2009