Anda tidak seharusnya bisa mendapatkan hasil dari executemany
:
Fungsi ini sebagian besar berguna untuk perintah yang memperbarui database:set hasil apa pun yang dikembalikan oleh kueri akan dibuang.
Menurut dokumen psycopg2.
Sebaiknya Anda mengulang satu insert
dalam transaksi, atau menggunakan insert... returning
, meskipun dalam kasus terakhir Anda harus berhati-hati untuk mencocokkan ID yang dikembalikan menggunakan nilai input lain, Anda tidak bisa hanya menganggap urutan ID yang dikembalikan sama dengan VALUES
input daftar.
Ketika saya menjalankan pengujian Anda secara lokal, itu gagal:
>>> import psycopg2
>>> conn = psycopg2.connect("dbname=regress")
>>> curs = conn.cursor()
>>> curs.execute("create table my_table(id serial primary key, field_1 integer, field_2 integer);")
>>> data = [(0, 0), (0, 0)]
>>> curs.executemany(
... "INSERT INTO my_table (field_1, field_2) "
... "VALUES (%s, %s) RETURNING id;",
... data
... )
>>>
>>> curs.fetchall()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
psycopg2.ProgrammingError: no results to fetch
Diuji dengan psycopg2 2.5.1.