我正在尝试使用参数化查询psycopg
来删除一堆行。我的脚本有如下删除语句:
cur.executemany( "WITH remove_rows as (DELETE FROM users WHERE userid = %s RETURNING *), insert_rows as (INSERT INTO old.users SELECT * FROM remove_rows RETURNING *) SELECT count(*) from insert_rows;", (id,))
我得到的错误是:
Traceback (most recent call last):
File "removal.py", line 17, in <module>
cur.executemany( "WITH remove_rows as (DELETE FROM .users WHERE userid = %s RETURNING *), insert_rows as (INSERT INTO old.users SELECT * FROM remove_rows RETURNING *) SELECT count(*) from insert_rows;", (id,))
psycopg2.ProgrammingError: syntax error at or near "%"
LINE 1: ...ws as (DELETE FROM users WHERE userid = %s RETURNI...
当我从中删除空间userid = %s
并制作它时userid=%s
,我得到了与 message 相同的错误column "s" does not exist
。
我开始怀疑psycopg2
参数化是否不能处理 CTE?