首页 > 解决方案 > Postgresql 通过 sql 脚本更新,在后端获取通知

问题描述

我使用 django-rest-framework 作为后端,使用 postgresql 作为数据库。数据库可能会被原始 SQL 脚本更改,我希望在这些更改发生时在后端得到通知,以便我可以通知不同的用户有关更改。

我检查了诸如https://gist.github.com/pkese/2790749之类的帖子,以在 python 中接收通知和一些 SQL 脚本

CREATE TRIGGER rec_notify_trig AFTER INSERT OR UPDATE OR DELETE ON rec
   FOR EACH ROW EXECUTE PROCEDURE rec_notify_func()

我的问题是我不知道如何在 django-rest-framework 中将它们连接在一起,比如我应该在哪里放置 SQL 脚本,在哪里放置 python 设置以便我可以将它们连接在一起。任何建议将被认真考虑。

标签: djangopostgresqldjango-rest-framework

解决方案


我会在 djangorestframework 端创建一个端点来接受通知。

然后,在您rec_notify_func()的终端中,您可以调用并点击您的端点,您可以在其中执行任何必要的最终用户通知。

CREATE EXTENSION plpython3u; 
CREATE FUNCTION rec_notify_func(notification_endpoint_uri text) RETURNS text AS $$
  from urllib.request import urlopen
  data = urlopen(notification_endpoint_uri)
  return data.read()
$$ LANGUAGE plpython3u;

注意:您需要在系统上安装 plpython 才能启用扩展。

在 ubuntu 上是这样的: sudo apt-get install postgresql-plpython3-9.6


推荐阅读