django - 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 设置以便我可以将它们连接在一起。任何建议将被认真考虑。
解决方案
我会在 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
推荐阅读
- docker - 如何将私有组织镜像从 docker hub 部署到 kubernetes
- c# - 'System.ComponentModel.Win32Exception:操作成功完成',同时调试单元测试
- sql - 为什么我在使用 concat 而不是 || 时会出错 在下面的查询中
- javascript - 如何在 React JS 中将日期 --- 2019 年 2 月 27 日星期三 11:11:16 GMT+0530(印度标准时间)转换为 2019 年 2 月 27 日格式
- java - 在 Linux 中杀死 Java 线程
- python - celery 可以在运行时刷新 amqp 连接参数吗?
- apache-kafka - 如何一次将多个(不同)元组从一个 KafkaSpout 发送到螺栓?
- c# - 具有不同名称的服务安装程序
- c++ - 是否可以在 cpp 中创建一组指向对象的指针?
- html - 显示
文本而不是在angular6中换行的问题