Я хотел бы использовать psycopg2 для INSERT
нескольких строк, а затем вернуть все id
s (по порядку), используя один запрос. Это то, для чего предназначено расширение PostgreSQL RETURNING
, и, кажется, оно отлично работает с использованием cursor.execute
:
cursor.execute(
"INSERT INTO my_table (field_1, field_2) "
"VALUES (0, 0), (0, 0) RETURNING id;"
)
print cursor.fetchall()
[(1,), (2,)]
Теперь, чтобы передать динамически сгенерированные данные, кажется, что cursor.executemany
- это путь:
data = [(0, 0), (0, 0)]
cursor.executemany(
"INSERT INTO my_table (field_1, field_2) "
"VALUES (%s, %s) RETURNING id;",
data
)
Однако в этом случае cursor.fetchall()
выдает следующее:
[(4,), (None,)]
Как мне заставить его правильно возвращать все id
вместо одного?