Python Lernhandbuch

Kapitel 12: Postgres einbinden · Abschnitt 2 von 7

Verbinden und abfragen

python
import psycopg

conninfo = 'host=localhost port=5432 dbname=lerndb user=lernen password=geheim'

with psycopg.connect(conninfo) as conn:
    with conn.cursor() as cur:
        cur.execute('SELECT version()')
        print(cur.fetchone())          # ('PostgreSQL 17...',)

Was passiert:

  • psycopg.connect(conninfo) baut die Verbindung auf. Statt eines Textes kannst du auch Schlüsselwörter nutzen: psycopg.connect(host='localhost', dbname='lerndb', user='lernen', password='geheim').
  • Der äußere with-Block (Verbindung) bestätigt die Änderungen (commit), wenn er ohne Fehler endet, macht sie bei einem Fehler rückgängig (rollback) und schließt am Ende die Verbindung.
  • Der Cursor ist das Objekt, über das du Befehle schickst und Ergebnisse abholst.
  • fetchone() liefert eine Zeile als Tupel (oder None, wenn es keine gibt).
Parameter von psycopg.connect(...) Bedeutung
conninfo Verbindungstext host=... dbname=... oder URL postgresql://benutzer:passwort@host:5432/dbname
host, port, dbname, user, password Einzelangaben statt conninfo
autocommit=False Mit True wird jeder Befehl sofort bestätigt (keine Transaktionen)
row_factory Form der Ergebniszeilen, z. B. dict_row
connect_timeout Wartezeit beim Verbinden in Sekunden

Die Verbindungsdaten liest du aus einer Umgebungsvariable, nicht aus dem Code: conn = psycopg.connect(os.environ['DATABASE_URL']) mit z. B. postgresql://lernen:geheim@localhost:5432/lerndb.

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

← Zurück