Единственное реальное решение, которое я знаю, это использовать триггеры. Существует обобщенный триггер для решения только такого типа проблем, который был включен в проект PostgreSQL в качестве устанавливаемого расширения для 9.2 (ожидается, что он будет выпущен этим летом). Если ваша среда python поддерживает функцию PostgreSQL LISTEN/NOTIFY, вы можете загрузить ее и использовать ее с 9.1 или 9.0. (Мы [судебная система Висконсина] использовали его в производственных целях как в течение нескольких месяцев.) Боюсь, что вам нужно будет построить его из источника, пока не будет выпущена версия 9.2. Если вы еще не сделали этого раньше, в нижней части этой страницы должно быть хорошее начало:
http://www.postgresql.org/docs/devel/static/contrib.html
Вы можете найти исходный код для расширения здесь:
http://git.postgresql.org/gitweb/?p=postgresql.git;a=tree;f=contrib/tcn;h=aa9c5813223a3996e22cabbf064d7243fa474c6c;hb=HEAD
.. ., и вы можете найти себе документы здесь:
http://www.postgresql.org/docs/devel/static/tcn.html
вы должны были бы создайте триггер, который выполняет эту триггерную функцию для каждой таблицы, для которой вы хотите получить уведомление. Не имеет значения, является ли DML прямым или косвенным, как в случае ON DELETE CASCADE определения внешнего ключа. В то время как документы дают пример, когда функция прикрепленную к все DML, вы можете прикрепить его просто удалить, если это то, что вам нужно, например:
create trigger example_tcn_trigger
after delete on example
for each row execute procedure triggered_change_notification();
Полное раскрытие: я написал это для суда Висконсин и они позволили мне поделиться им с сообществом PostgreSQL.
Нет решения на уровне Python через sqlalchemy? – JalilDotMe