PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

psycopg2 và tập lệnh python vô hạn

Một nhóm kết nối hoạt động tốt cho loại điều này. Tôi chưa làm việc với nó trong sản xuất (chủ yếu sử dụng Django hoặc SQLAlchemy), nhưng psycopg2.pool bao gồm một số triển khai khác nhau (SimpleConnectionPool hoặc PersistentConnectionPool ) mà có thể sẽ phù hợp với nhu cầu của bạn. Nói chung, một pool không chỉ giúp quản lý các kết nối như một tài nguyên được chia sẻ mà còn kiểm tra và khởi tạo lại kết nối khi cần.

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 là cực kỳ quan trọng, để một ngoại lệ không rời khỏi nhóm vì nghĩ rằng kết nối vẫn đang được sử dụng. Sẽ rất tốt nếu bạn xử lý nó như một trình quản lý ngữ cảnh:

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)

Hy vọng điều đó sẽ hữu ích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể kết nối với vùng chứa Postgres docker từ vùng chứa Golang

  2. PostgreSQL Tương đương với Gợi ý NoLock của SQLServer

  3. Sự khác biệt giữa dấu nháy đơn và dấu nháy kép trong PostgreSQL là gì?

  4. Tạo sql với truy vấn con dưới dạng một cột trong câu lệnh chọn bằng cách sử dụng SQLAlchemy

  5. Làm thế nào để cài đặt các tiện ích mở rộng Postgres khi tạo cơ sở dữ liệu?