多个参数 psycopg2 where 子句 - 语法错误
Posted
技术标签:
【中文标题】多个参数 psycopg2 where 子句 - 语法错误【英文标题】:Multiple parameters psycopg2 where clause - Syntax error 【发布时间】:2017-05-26 10:23:25 【问题描述】:我在下面最后一个查询中的 WHERE 子句处或附近遇到语法错误。
只有一个参数的查询可以正常工作,所以我猜这个错误与我试图传递两个参数的事实有关。
提前致谢。
cur.execute('''SELECT street_name, id FROM tablename
WHERE (((suburb = '') IS NOT FALSE)
AND ((street_name2 = '') IS NOT FALSE));''')
datesfrompdf = cur.fetchall()
for rowdate, rowid in datesfrompdf:
cur.execute("DELETE FROM tablename WHERE id = %s;", (rowid + 1,) #this works fine
cur.execute('''INSERT INTO tablename (got_date)
VALUES (%s) WHERE ((suburb IS NOT NULL) #syntax error here
AND (street_name2 IS NOT NULL)
AND (id > %s));''', (rowdate, rowid))
运行 psql 9.3.14、python 2.7
【问题讨论】:
【参考方案1】:您不能将 WHERE
子句放入 INSERT
语句 - insert 插入新行。您可能正在寻找UPDATE
声明。
我只能猜测,但你可能想要这样的东西:
UPDATE tablename
SET got_date = (%s)
WHERE ((suburb IS NOT NULL)
AND (street_name2 IS NOT NULL)
AND (id > %s));
【讨论】:
应该从文档中获取。谢谢老兄。以上是关于多个参数 psycopg2 where 子句 - 语法错误的主要内容,如果未能解决你的问题,请参考以下文章
TypeORM查找where子句,如何在多个参数中添加where
如何仅使用在不使用动态SQL的情况下检查的复选框,将WHERE子句设置为在多个位列上进行过滤?
Laravel 6:如何将多个 where 子句添加到关系中