Почему я получаю сообщение об ошибке при попытке выполнить запрос с параметрами в postgreSQL? - PullRequest
0 голосов
/ 06 июня 2009

БД - это 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», это работает. Что мне с этим делать?

Ответы [ 2 ]

2 голосов
/ 06 июня 2009

özgür,

Попробуйте

to_tsquery(%s)

вместо

to_tsquery('%s')
0 голосов
/ 06 июня 2009

Я полагаю, вам не хватает 'после E.

...