[SQLAlchemy] event-system?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
MoonKid
User
Beiträge: 105
Registriert: Mittwoch 10. Dezember 2014, 16:24

Hat SQLAlchemy so etwas wie ein Event-System?

z.B. möchte ich "erfahren" (im Sinne eines Observers), wenn eine neue Instanz einer tabellen-repräsentierenden Klasse erzeugt wird, um wiederum eine Listendarstellung aller Instanzen dieser Klasse aktualisieren zu können.

Ich muss also wissen, wann die Liste "erweitert" wird. In diesem Sinne ist die Objekt-Liste selbst das Model. Aber es gibt kein intelligentes Listen-Objekt, was solche Nachrichten weiterleiten würde.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@MoonKid: viel einfacher und durchschaubarer ist es doch, wenn Du, immer wenn Du eine neue Instanz erzeugst, diese Deiner Liste meldest.
MoonKid
User
Beiträge: 105
Registriert: Mittwoch 10. Dezember 2014, 16:24

Sirius3 hat geschrieben:immer wenn Du eine neue Instanz erzeugst, diese Deiner Liste meldest.
Exakt. Die Frage ist aber, wie das technisch implementiert werden könnte. (Beispiel: Observer Pattern)
Evtl. hat ja sqla schon so eine Art Benachrichtigungssystem/-schnittstelle - fände ich jedenfalls logisch und sinnvoll.
BlackJack

@MoonKid: Vielleicht heisst das in SQLAlchemy Events und das ist vielleicht dokumentiert. Wobei ich da jetzt auf die schnelle nichts für Tabellen/Exemplare beim ”Core” gefunden habe sondern nur beim ORM-Teil der Bibliothek.

Letztlich würde ich aber sagen das ist der falsche Ansatzpunkt das man etwas für *alle* Exemplare machen möchte, denn das funktioniert ja nur solange man das tatsächlich für *alle* machen möchte. Das schliesst dann aus das irgendwo Exemplare erzeugt werden die nur als Zwischenergebnisse existieren und gar nicht in der Liste an die Du das melden möchtest erscheinen sollen. Und Unit-Tests könnten damit auch zumindest umständlicher werden.
Antworten