Die einzige wirkliche Lösung, die ich kenne, ist Auslöser zu verwenden. Es gibt einen generalisierten Auslöser für die Behandlung genau dieser Art von Problem, der als eine installierbare Erweiterung für 9.2 (die voraussichtlich diesen Sommer veröffentlicht wird) an das PostgreSQL-Projekt übergeben wurde. Wenn Ihre Python-Umgebung die LISTEN/NOTIFY-Funktion von PostgreSQL unterstützt, können Sie diese herunterladen und mit 9.1 oder 9.0 verwenden. (Wir [das Wisconsin-Gerichtssystem] haben es seit Monaten in der Produktion mit beiden verwendet.) Sie müssten es in der Lage sein, es aus der Quelle zu bauen, fürchte ich, bis Version 9.2 veröffentlicht wird. Wenn Sie nicht zuvor getan haben, sollten die unten auf dieser Seite ein guter Anfang sein:
http://www.postgresql.org/docs/devel/static/contrib.html
Sie Quellcode für die Erweiterung finden Sie hier:
http://git.postgresql.org/gitweb/?p=postgresql.git;a=tree;f=contrib/tcn;h=aa9c5813223a3996e22cabbf064d7243fa474c6c;hb=HEAD
.. ., und Sie können zur Zeit docs finden Sie hier:
http://www.postgresql.org/docs/devel/static/tcn.html
Sie müssen Erstellen Sie einen Trigger, der diese Triggerfunktion für jede Tabelle ausführt, für die Sie eine Benachrichtigung wünschen. Es spielt keine Rolle, ob die DML direkt oder indirekt ist, etwa durch die ON DELETE CASCADE-Klausel einer Fremdschlüsseldefinition. Während die docs ein Beispiel zu geben, wo die Funktion zu alle DML angeschlossen ist, können Sie es anhängen nur zu löschen, wenn das ist, was Sie benötigen, wie folgt aus:
create trigger example_tcn_trigger
after delete on example
for each row execute procedure triggered_change_notification();
Vollständige Offenlegung: Ich schrieb dies für die Wisconsin Gericht System und sie erlaubten mir, es mit der PostgreSQL-Gemeinschaft zu teilen.
Es gibt keine Lösung in Python-Ebene durch sqlalchemy? – JalilDotMe