相关疑难解决方法(0)

获取插入到 psycopg2 中的多行的 id

我想将 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 而不是一个?

python postgresql psycopg2

5
推荐指数
2
解决办法
6845
查看次数

标签 统计

postgresql ×1

psycopg2 ×1

python ×1