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 (oderNone, 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.