我想将 psycopg2 用于INSERT多行,然后id使用单个查询返回所有s(按顺序)。这就是 PostgreSQLRETURNING扩展的设计目的,使用cursor.execute以下命令似乎可以正常工作:
cursor.execute(
"INSERT INTO my_table (field_1, field_2) "
"VALUES (0, 0), (0, 0) RETURNING id;"
)
print cursor.fetchall()
[(1,), (2,)]
Run Code Online (Sandbox Code Playgroud)
现在,为了传递动态生成的数据,似乎cursor.executemany是要走的路:
data = [(0, 0), (0, 0)]
cursor.executemany(
"INSERT INTO my_table (field_1, field_2) "
"VALUES (%s, %s) RETURNING id;",
data
)
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,cursor.fetchall()会产生以下结果:
[(4,), (None,)]
Run Code Online (Sandbox Code Playgroud)
我如何让它正确返回所有ids 而不是一个?