多个参数psycopg2 where子句 - 语法错误

时间:2017-05-26 10:23:25

标签: python postgresql python-2.7 psycopg2

我在下面的最后一个查询中的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 个答案:

答案 0 :(得分:0)

您不能将WHERE子句放入INSERT语句 - 插入插入新行。您可能正在寻找UPDATE声明。

我只能猜测,但你可能想要这样的东西:

UPDATE tablename 
    SET got_date = (%s)
    WHERE ((suburb IS NOT NULL)
        AND (street_name2 IS NOT NULL)
        AND (id > %s));