Python psycopg2.ProgrammingError:语法错误位于或接近%&引用;

Python psycopg2.ProgrammingError:语法错误位于或接近%&引用;,python,postgresql,psycopg2,psycopg,Python,Postgresql,Psycopg2,Psycopg,我试图使用参数化查询和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,)) 我

我试图使用参数化查询和
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...
回溯(最近一次呼叫最后一次):
文件“removation.py”,第17行,在
cur.executemany(“使用remove_rows as(从.users中删除,其中userid=%s返回*)、insert_rows as(插入到old.users中选择*从remove_rows返回*)选择count(*)从insert_rows;”,(id,)
psycopg2.ProgrammingError:位于或接近“%”的语法错误
第1行:…ws-as(从userid=%s RETURNI的用户中删除)。。。
当我从
userid=%s
中删除空格并使其成为
userid=%s
时,我收到了与消息
列“s”不存在相同的错误

我开始怀疑
psycopg2
参数化是否不能处理CTE?

executemany()
接受一组嵌套的参数序列,而不是一个


要么将参数包装到另一个列表中,要么使用
cur.execute()
只运行一次查询。

我主要关注
cur.executemany()
调用,但由于我不熟悉CTEs,因此我不相信即使使用
cur.execute(),它也能工作
取而代之。因此我删除了我的答案。我意识到在发布后。execute()解决了我的问题:)谢谢,然后取消删除我的答案。:-)