PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

psycopg2 и безкраен скрипт на python

Пулът на връзки работи добре за този вид неща. Не съм работил с него в производството (използвайки главно Django или SQLAlchemy), но psycopg2.pool включва няколко различни реализации (SimpleConnectionPool или PersistentConnectionPool ), което вероятно ще отговаря на вашите нужди. Най-общо казано, пулът не само помага при управлението на връзките като споделен ресурс, но и при тестването и повторното инициализиране на връзката, когато е необходимо.

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 е изключително важно, така че изключение да не напусне пула, мислейки, че връзката все още се използва. Би било добре да го управлявате като контекстен мениджър:

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)

Надявам се, че това помага.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате низ в числова стойност в PostgreSQL

  2. Django makemigrations Не са открити промени в приложението

  3. Условието за секвениране на обединена таблица не работи с ограничение

  4. Как да създадете база данни с flyway?

  5. Как да разрешим само един ред за таблица?