Für eine Webanwendung öffnest du nicht bei jeder Anfrage eine neue Verbindung, sondern hältst einen Pool bereit.
python
from psycopg.rows import dict_row
from psycopg_pool import ConnectionPool
pool = ConnectionPool(
conninfo=os.environ['DATABASE_URL'], # dafür oben import os
min_size=1,
max_size=5,
kwargs={'row_factory': dict_row},
open=True,
)
with pool.connection() as conn: # leiht eine Verbindung aus, gibt sie am Ende zurück
zeilen = conn.execute('SELECT * FROM kunden').fetchall()
Parameter von ConnectionPool(...) |
Bedeutung |
|---|---|
conninfo |
Verbindungsdaten |
min_size, max_size |
Untere und obere Zahl offener Verbindungen |
kwargs |
Zusätzliche Parameter für jede connect-Verbindung, z. B. row_factory |
open |
True öffnet den Pool sofort |
Beim Beenden des Programms pool.close() aufrufen. Bei einer Webanwendung ist das eine Aufgabe fürs Herunterfahren (Kapitel 14).