Redirected from page "DB Transaktionen"

Clear message
DB-Transaktionen

Transaktionen helfen, die Daten konsistent in einer Datenbank zu halten, gerade bei Datenbankaktionen die mehrere SQL-Statements benötigen. Bei einfachen Aktionen, die mit einem SQL-Statement auskommen, sind sie unnötig. Aber welche Aktion kommt schon mit einem Statement aus? Oft will man etwas lesen, daraus ein Ergebnis berechnen und dieses in die Datenbank zurückschreiben.

Eine einfache Möglichkeit, Transaktionen zu nutzen, bietet das Python DB-API 2.0. Es stellt Methoden wie connection.rollback() oder connection.commit() bereit.

Es wird für die Verbindung automatisch eine Transaktion gestartet, falls die Datenbank Transktionen unterstützt. Falls das Modul wirklich DB-API-2 kompatibel ist, muss diese Transaktion committed werden, bevor die Verbindung geschlossen wird. Selbstverständlich können mehrere Transaktionen nacheinander ausgeführt werden; nach jeder einzelnen ist nur rollback() oder commit() aufzurufen.

Hinzu kommt, dass sich die Daten während einer Transaktion nicht ändern, also wenn man die Verbindung öffnet um Daten auszulesen und die Daten von anderer Stelle aktualisiert werden muss man seine eigene Transaktion schließen, bevor man die von anderer Seite aktualisierten Daten tatsächlich auch sieht.

Funktionsprinzip (als Pseudocode):

...
cursor.execute(SQL-Statement)
# Eigene Sicht der Daten dauerhaft speichern
db.commit()

# transaktion start

try:
  cursor.execute(SQL-Statement 1)
  cursor.execute(SQL-Statement 2)
  ...
  cursor.execute(SQL-Statement n)
except:
  # transaktion aufheben
  db.rollback()
  raise
else:
  # transaktion erfolgreich beendet
  db.commit()

Tags: Web | Db

DB-Transaktionen (last edited 2009-07-06 15:16:34 by BjörnSchulz)