Mehrere Änderungen, ein Ergebnis · Übung
Eine vollständige Ausleihe festschreiben
Beginne mit dem Ergebnis, bei dem beide vorgeschlagenen Ausleihvorgänge gültig sind. Der dauerhafte Erfolgspunkt gehört hinter beide Einfügungen, denn ihn zu erreichen bedeutet, dass das vollständige Paar erfolgreich war.
Dein Projekt enthält bereits schema.sql. Die Datei erstellt die drei bekannten Tabellen neu und soll unverändert bleiben. Arbeite in transactions.py. Wenn du auf Run klickst, erstellt die sichtbare Datei run_transactions.py neue Datenbanken, ruft deine Funktionen mit den angezeigten Argumenten auf und meldet, was eine andere Verbindung lesen kann. Lass dieses Ausführungsprogramm unverändert.
Öffne transactions.py. checkout_pair(connection, first_loan, second_loan) führt dasselbe parametrisierte INSERT bereits zweimal aus. Jeder vorgeschlagene Ausleihvorgang hat genau diese Form:
(id, item_id, member_id, checked_out_on)
Füge eine Zeile hinter beiden execute()-Aufrufen und vor return True hinzu:
connection.commit()
commit() speichert die erfolgreichen Änderungen dauerhaft. Eine neue Verbindung kann sie dann lesen. Es hinter die erste Einfügung zu setzen würde die Operation erneut teilen: Wenn die zweite Einfügung scheiterte, wäre die erste bereits dauerhaft gespeichert.
Klicke auf Run. Der erste feste Fall ruft auf:
checkout_pair(
connection,
(7001, 4, 17, "2026-08-26"),
(7002, 5, 28, "2026-08-26"),
)
Er sollte True zurückgeben, und beim erneuten Öffnen sollte [7001, 7002] sichtbar sein.
Derselbe Durchlauf zeigt auch ein Paar mit fehlendem Mitglied. Vorerst bricht es mit einem Datenbankregelfehler ab. Die ausführende Verbindung kann die erste vorgeschlagene Zeile sehen, während eine erneut geöffnete Verbindung keine von beiden sieht, weil der Erfolgspunkt nie erreicht wurde. Behalte diesen unaufgelösten Zustand im Kopf. Er zeigt genau, was der Fehlerpfad noch beheben muss.
Submit ruft checkout_pair mit anderen Werten auf. Es prüft die exakt gespeicherten Werte über eine separate Verbindung und führt dann über die übergebene Verbindung eine harmlose Abfrage aus. Schließe die Verbindung nicht innerhalb der Funktion; der aufrufende Code ist für ihren Lebenszyklus verantwortlich.
Aufgabe
Vervollständige checkout_pair in transactions.py. Schreibe einmal fest, erst nachdem beide gebundenen Einfügungen erfolgreich waren, und gib dann True zurück. Lass die übergebene Verbindung offen.
Der fehlschlagende Run-Fall bleibt vorerst unaufgelöst. Submit prüft das erfolgreich dauerhaft gespeicherte Paar.