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

Cara menggunakan kursor sisi server dengan psycopg2

Psycopg2 memiliki antarmuka yang bagus untuk bekerja dengan kursor sisi server. Ini adalah template yang mungkin untuk digunakan:

with psycopg2.connect(database_connection_string) as conn:
    with conn.cursor(name='name_of_cursor') as cursor:

        cursor.itersize = 20000

        query = "SELECT * FROM ..."
        cursor.execute(query)

        for row in cursor:
            # process row 

Kode di atas membuat koneksi dan secara otomatis menempatkan hasil kueri ke kursor sisi server. Nilai itersize menetapkan jumlah baris yang akan ditarik klien pada suatu waktu dari kursor sisi server. Nilai yang Anda gunakan harus menyeimbangkan jumlah panggilan jaringan versus penggunaan memori pada klien. Misalnya, jika jumlah hasil Anda adalah tiga juta, sebuah itersize nilai 2000 (nilai default) akan menghasilkan 1500 panggilan jaringan. Jika memori yang digunakan oleh 2000 baris ringan, tingkatkan jumlah itu.

Saat menggunakan for row in cursor Anda tentu saja bekerja dengan satu baris pada satu waktu, tetapi Psycopg2 akan mengambil itersize baris demi baris untuk Anda.

Jika Anda ingin menggunakan fetchmany untuk beberapa alasan, Anda dapat melakukan sesuatu seperti ini:

while True:
    rows = cursor.fetchmany(100)
    if len(rows) > 0:
        for row in rows:
            # process row
    else:
        break

Penggunaan fetchmany . ini tidak akan memicu panggilan jaringan ke server untuk lebih banyak baris hingga kumpulan yang diambil sebelumnya telah habis. (Ini adalah contoh berbelit-belit yang tidak memberikan apa pun selain kode di atas, tetapi menunjukkan cara menggunakan fetchmany jika ada kebutuhan.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat memilih beberapa baris dengan npgsql pada database Portugis

  2. Bagaimana transaction_timestamp() Bekerja di PostgreSQL

  3. Pemesanan kueri lambat menurut kolom dalam tabel yang digabungkan

  4. PostgreSQL:Tipe Data mana yang harus digunakan untuk Mata Uang?

  5. Cara mendapatkan tipe dasar array di postgres melalui jdbc