当我尝试在postgreSQL中使用参数执行查询时,为什么会出现错误?

时间:2009-06-06 17:15:45

标签: django postgresql django-orm

db是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抱怨编程错误,在参数处或附近添加语法错误(在此示例中为“ hello ”)。这是Django生成的SQL语句的一部分,错误来自:

to_tsquery('E'hello'')

即使我将其复制粘贴到postgreSQL shell,我也会收到语法错误。如果我省略'E'部分,它就可以了。我应该怎么做呢?

2 个答案:

答案 0 :(得分:2)

Özgür的,

尝试

to_tsquery(%s)

而不是

to_tsquery('%s')

答案 1 :(得分:0)

我相信你错过了'在E.之后'。