Python Lernhandbuch

Kapitel 12: Postgres einbinden · Abschnitt 7 von 7

Verbindungspool für Webapps

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).

Tipp: Bei Python-Beispielen kannst du auf ▶ Ausprobieren klicken, den Code verändern und direkt ausführen.

← Zurück