PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

mendapatkan id dari beberapa baris yang dimasukkan ke dalam psycopg2

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Anda menulis kueri case-insensitive untuk MySQL dan Postgres?

  2. Kesalahan:Kolom tidak ada

  3. Cara memasukkan dan menghapus data di PostgreSQL

  4. Panduan Mempartisi Data Di PostgreSQL

  5. Mungkinkah melakukan kueri lintas basis data dengan PostgreSQL?