PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

psycopg2 i nieskończony skrypt Pythona

Pula połączeń sprawdza się w takich sytuacjach. Nie pracowałem z nim w produkcji (używając głównie Django lub SQLAlchemy), ale psycopg2.pool zawiera kilka różnych implementacji (SimpleConnectionPool lub PersistentConnectionPool ), które prawdopodobnie pasowałyby do Twoich potrzeb. Ogólnie rzecz biorąc, pula nie tylko pomaga w zarządzaniu połączeniami jako zasobem udostępnionym, ale także w testowaniu i ponownej inicjalizacji połączenia, gdy jest to potrzebne.

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 jest niezwykle ważne, aby wyjątek nie opuścił puli myśląc, że połączenie jest nadal używane. Dobrze byłoby potraktować to jako menedżer kontekstu:

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)

Mam nadzieję, że to pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Optymalizacja wyszukiwania pełnotekstowego Django - Postgres

  2. Unikalne ograniczenie warunków w MYSQL

  3. Tabele i indeksy a HDD i SSD

  4. Jak znaleźć tabele podrzędne, które dziedziczą z innej tabeli w PSQL?

  5. Odejmij dwa zapytania z tej samej tabeli