Python Lernhandbuch

Kapitel 12: Postgres einbinden · Abschnitt 5 von 7

Transaktionen

Eine Transaktion fasst mehrere Befehle zusammen: Entweder gelten alle oder keiner.

python
with psycopg.connect(conninfo) as conn:
    conn.execute('UPDATE konten SET stand = stand - 50 WHERE id = %s', (1,))
    conn.execute('UPDATE konten SET stand = stand + 50 WHERE id = %s', (2,))
    # Ende des with-Blocks ohne Fehler: automatisch commit
    # Fehler irgendwo im Block: automatisch rollback, keiner der beiden Befehle gilt
Mittel Wirkung
conn.commit() Änderungen bestätigen
conn.rollback() Änderungen verwerfen
with conn.transaction(): Eine untergeordnete Transaktion in einer Verbindung
autocommit=True Jeder Befehl wird sofort bestätigt

Ohne Commit sind Änderungen für andere Verbindungen nicht sichtbar, und beim Schließen ohne Commit gehen sie verloren. Das ist der häufigste Anfängerfehler ("mein INSERT ist nicht da").

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

← Zurück