PostgreSQL通过sql脚本更新,在后端获取通知

时间:2019-07-18 00:40:37

标签: django postgresql django-rest-framework

我正在使用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-frame中将它们连接在一起,例如我应该在哪里放置SQL脚本,在哪里放置python设置以便可以将它们连接在一起。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

我会在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