sql >> Databasteknik >  >> RDS >> PostgreSQL

psycopg2 och oändligt python-skript

En anslutningspool fungerar bra för sånt här. Jag har inte arbetat med det i produktionen (med huvudsakligen Django eller SQLAlchemy), utan psycopg2.pool innehåller några olika implementeringar (SimpleConnectionPool eller PersistentConnectionPool ) som förmodligen skulle passa ditt behov. Generellt sett hjälper en pool inte bara med att hantera anslutningar som en delad resurs, utan också att testa och återinitiera anslutningen när det behövs.

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 är extremt viktigt, så att ett undantag inte lämnar poolen och tror att anslutningen fortfarande används. Skulle vara bra att hantera det som sammanhangshanterare:

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)

Hoppas det hjälper.




  1. Emulator vs Samsung-enhet SD-kortlagring

  2. Anslut till SphinxQL via Linux kommandorad

  3. Finns det något alternativ till IN med LIMIT?

  4. Hur man infogar en klump i en databas med sql server management studio