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

psycopg2 dan skrip python tak terbatas

Kolam koneksi berfungsi dengan baik untuk hal semacam ini. Saya belum pernah bekerja dengannya dalam produksi (terutama menggunakan Django atau SQLAlchemy), tetapi psycopg2.pool menyertakan beberapa implementasi berbeda (SimpleConnectionPool atau PersistentConnectionPool ) yang mungkin sesuai dengan kebutuhan Anda. Secara umum, kumpulan tidak hanya membantu mengelola koneksi sebagai sumber daya bersama, tetapi juga menguji dan menginisialisasi ulang koneksi saat dibutuhkan.

from psycopg2 import pool
conn_pool = pool.PersistentConnectionPool(minconn, maxconn, **dbopts)

def work_method():
    conn = conn_pool.getconn()
    with conn.cursor() as stmt:
        stmt.execute(sql)
    conn_pool.putconn(conn)

putconn sangat penting, sehingga pengecualian tidak meninggalkan kumpulan berpikir bahwa koneksi masih digunakan. Akan lebih baik untuk menanganinya sebagai pengelola konteks:

import contextlib

@contextlib.contextmanager
def get_db_connection():
    conn = conn_pool.getconn()
    yield conn
    conn_pool.putconn(conn)

def work_method():
    with get_db_connection() as conn:
        with conn.cursor() as stmt:
            stmt.execute(sql)

Semoga membantu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django + PostgreSQL:membuat database (hak istimewa apa yang diberikan)

  2. Optimalisasi kecepatan basis data:beberapa tabel dengan banyak baris, atau banyak tabel dengan beberapa baris?

  3. Membuat indeks unik parsial dengan sqlalchemy di Postgres

  4. Mengapa setval() Gagal Dengan relasi ... tidak ada?

  5. Psql tidak dapat terhubung ke server:Tidak ada file atau direktori seperti itu, kesalahan 5432?