PostgreSQL 安装PYTHON扩展,访问页面或者第三方程序
应用场景当数据库中relationtable表中有数据插入、更新、删除操作,postgresql 调用第三方接口,进行处理。这里用pgsq 中python的扩展插件来实现。
1、安装PostgreSQL中的plpython3u 插件
1.1 安装plpython3u 在windows环境
我本地的pgsql 安装的是pgsql12的版本,由于版本的不同,需要下载的python 版本也不同。12版本python3.7 可以具体下载地址:https://www.python.org/ftp/python/3.7.7/python-3.7.7-amd64.exe
检查Postgresql的安装目录下面的 lib 文件夹有没有 plpython3.dll 。这是Postgresql 调用Python 3.X的DLL文件.如果是老的pgsql9之前的版本调用的是plpythonu.dll对应的python2.x的版本。
参考文章:https://blog.csdn.net/weixin_34405332/article/details/92575854
新建QueryTool,执行 CREATE EXTENSION plpython3u;

如:报错"ERROR: could not load library "C:/Program Files/PostgreSQL/12/lib/plpython3.dll": The specified module could not be found."
复制C:\Python37\DLLs\python3.dll到C:\Program Files\PostgreSQL\12\lib下 重命名python37.dll

继续执行如果还报错,将python37.dll 复制到C:\Window\System32 下,执行成功
1.2 安装plpython3u 在linux环境
检查pgsql 是否安装插件plpython3u,在 界面上输入 su postgres 切换至postgres用户,输入psql 进入查询语句,输入select name from pg_available_extensions; 查看安装的扩展,如下图:

这里发现没有装扩展plpython3u,进入https://www.postgresql.org/download/linux/redhat/,点击下图位置:

进入版本选择界面,选择相应的Linux的版本以及postgresql版本:查看postgresql版本,如下:

查看linux 版本,见下图:

点击选择相应的版本:

下载对应的python扩展安装包:

将下载好的 postgresql11-plpython3-11.7-1PGDG.rhel8.x86_64.rpm 放入服务器的tmp目录
cd /tmp
rpm -ivh postgresql11-plpython3-11.7-1PGDG.rhel8.x86_64.rpm

安装成功后,可以在pgsql的查询器中查看到有了python的扩展。

在pgadmin连接工具中,运行 CREATE PROCEDURAL LANGUAGE plpython3u; 运行成功
2、创建运行Python的自定义函数
CREATE OR REPLACE FUNCTION httpclient()
RETURNS text AS
$BODY$
import urllib.request
url="https://www.baidu.com/"
req=urllib.request.Request(url)
resp=urllib.request.urlopen(req)
data=resp.read().decode('utf-8')
return data
$BODY$
LANGUAGE 'plpython3u' VOLATILE;
这里用python创建一个访问baidu的自定义函数。BODY 里面放入运行的python语句,LANGUAGE 后接 要执行的扩展插件
3、创建触发器函数
CREATE fUNCTION relationtabletrigger() Returns trigger As $relationtabletrigger$
BEGIN
If(TG_OP='INSERT' or TG_OP='UPDATE' or TG_OP='DElETE' ) THEN
INSERT INTO public.baidu(
html)
VALUES (httpclient());
END IF;
RETURN null;
END;
$RelationTableTrigger$ LANGUAGE plpgsql;
当新增、更新、删除的时候,将httpclient的内容,存入到baidu的表里面
4、表绑定触发器函数
将relationtable表新建一个触发器并绑定,如下图:
CREATE TRIGGER testtriggers
BEFORE INSERT OR DELETE OR UPDATE
ON public.relationtable
FOR EACH ROW
EXECUTE PROCEDURE public.relationtabletrigger();
也可以直接在pgadmin上通过界面,新建触发器绑定触发器函数:


5、测试是否生效


ok 测试成功!
PostgreSQL 安装PYTHON扩展,访问页面或者第三方程序的更多相关文章
- 1.4.1 安装Python扩展库
Python之所以得到各行业领域工程师.策划师以及管理人员的青睐,与涉及各行业各领域开发的扩展库也有很大关系,不仅数量众多.功能强大,关键是用起来很方便.虽然Python标准库已经拥有了非常强大的功能 ...
- visual studio code 安装python扩展
Ctrl+P 调出控制台,在控制台里输入ext install python,点击第一个安装 如果出现: visual studio code connect ETIMEDOUT 191.238.17 ...
- 一步一步从PostgreSQL安装到delphi 访问
今天,我们使用ubuntu 19 来安装PostgreSQL. 1.直接使用包安装 sudo apt-get install postgresql 按Y,直接安装. 安装完毕. 初次安装后,默认生成一 ...
- .windows安装使用这些偏底层的Python扩展太
.windows安装使用这些偏底层的Python扩展太不爽了,怎么彻底解决 error: Unable to find vcvarsall.bat呢? 1.不要按网上说的,安装MinGW,然后在“.. ...
- linux和windows下安装python拓展包及requirement.txt安装类库
python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- Visual Studio Code安装Python环境
如何在全宇宙最强编辑器安装Python运行环境 (雾 首先安装Python2和Python3,如果只需要用到一个的话,直接安装即可运行,不存在转换问题. 安装Python扩展,直接搜索安装即可. 更改 ...
- 安装 python 爬虫框架 Scrapy
官方安装说明文档:https://doc.scrapy.org/en/latest/intro/install.html#installing-scrapy 一.scrapy 需要以下依赖 二.一般来 ...
- window下python 扩展库安装 使用第三方镜像源
0.前言 由于python的官方镜像位于国外,若使用pip或者easy_install安装第三方插件时或许会被限制,甚至连easy_install或pip也无法安装,例如在windows环境下 ...
随机推荐
- tp5--模型关联
来源于:https://blog.csdn.net/u012600104/article/details/78927629 先说明,模型关联和join管理是不一样的,用文章和评论的关系来举例.(一对多 ...
- nginx+vue+thinkphp5.1部署,解决前端刷新404,以及前端404解决后,后台又404的问题
宝塔的话直接在网站的伪静态一栏中如下就行 location /admin { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 la ...
- 【Linux题目】第六关
[定时任务规则] 1. 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?( ) 30 4 * * 3 mycmd A. 每小时. B. 每周. C. 每年三月 ...
- Ubuntu下访问Windows中Postgresql
因为项目的原因,需要将Ubuntu中的一些信息记录到Windows中的Postgresql数据库中,查看网上信息,最后成功了,特地记录以下,需要以下步骤: (1)在Windows中Postgresql ...
- 源码学习VUE之Observe
在文章 源码学习VUE之响应式原理我们大概描述了响应式的实现流程,主要写了observe,dep和wather的简易实现,以及推导思路.但相应代码逻辑并不完善,今天我们再来填之前的一些坑. Obser ...
- JavaWEB开发时FCKeditor类似office界面的ajax框架,加入后就能做界面类似office,能进行简单的文本编辑操作+配置手册...
2019独角兽企业重金招聘Python工程师标准>>> FCKeditor是一款功能强大的开源在线文本编辑器(DHTML editor),它使你在web上可以使用类似微软Word 的 ...
- python 多进程处理 multiprocessing模块
前提: 有时候一个用一个进程处理一个列表中的每个元素(每个元素要传递到一个函数中进行处理),这个时候就要用多进程处理 1 现场案例: 我有一个[ip1,ip2,ip3,.......]这样的列表,我要 ...
- 前端程序员难翻身,没有好的学习方法,你永远无法成功,vue.js专题
学习vue正确思路,是先学vue-cli,再学vue.js单文件引用的用法,这样会在极短时间内撤底撑握vue, 如果先学vue.js单文件用法,再去学vue-cli4,可以说是重新学vue,,,,难处 ...
- Codeforces Round #587
题目链接:Round #587 题目答案:官方Editorial.My Solution A. Prefixes 题意:给一字符串,只含有'a'或'b',需要改变某些位置('a'变'b'或'b'变'a ...
- 数学--数论-- AtCoder Beginner Contest 151(组合数+数学推导)好题(๑•̀ㅂ•́)و✧
思路统计最大值出现的次数,和最小值出现的次数.虽然是每次都是MAX-MIN,我们先求MAX的和,然后再求MIN的和,做差. 这次代码写的真的很漂亮 题目地址: #include <bits/st ...