多个参数 psycopg2 where 子句 - 语法错误
Multiple parameters psycopg2 where clause - Syntax error
我在下面最后一个查询的 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
您不能将 WHERE
子句放入 INSERT
语句中 - insert 插入新行。您可能正在寻找 UPDATE
语句。
我只能猜测,但你可能想要这样的东西:
UPDATE tablename
SET got_date = (%s)
WHERE ((suburb IS NOT NULL)
AND (street_name2 IS NOT NULL)
AND (id > %s));
我在下面最后一个查询的 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
您不能将 WHERE
子句放入 INSERT
语句中 - insert 插入新行。您可能正在寻找 UPDATE
语句。
我只能猜测,但你可能想要这样的东西:
UPDATE tablename
SET got_date = (%s)
WHERE ((suburb IS NOT NULL)
AND (street_name2 IS NOT NULL)
AND (id > %s));