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环境下 ...
随机推荐
- The new SFCB broker fails to start with a SSL-related error: Failure setting ECDH curve name (secp22
# openssl ecparam -list_curves secp384r1 : NIST/SECG curve over a 384 bit prime field secp521r1 : NI ...
- 怎么在java中创建一个自定义的collector
目录 简介 Collector介绍 自定义Collector 总结 怎么在java中创建一个自定义的collector 简介 在之前的java collectors文章里面,我们讲到了stream的c ...
- 如何迅速分析出系统CPU的瓶颈在哪里?
内容出自极客时间专栏<Linux 性能优化实战> CPU 的性能指标那么多,CPU 性能分析工具一抓一大把,换成实际的工作场景,该观察什么指标.选择哪个性能工具呢? 不要担心,今天我就以多 ...
- Shiro踩坑记(一):关于shiro-spring-boot-web-starter自动注解无法注入authorizer的问题
一)问题描述: 我在一个Spring的项目中使用shiro搭建权限控制框架.主要通过shiro-spring-boot-web-starter包快速集成Shiro.但是项目无法启动,报没有author ...
- 数制转换itoa atoi int转字符串 字符串转int string转int int转string
在苦于昨晚最后一个数制转换题,他的转换结果必须是整形数,纳尼?转换完放数组里又要变成整形数.这是什么操作,而且如果是16进制,用字母A,B-表示,在进行运算时都难以计算. 突发奇想,当十进制成立的时候 ...
- codeforce 272E Dima and Horses (假DFS)
E. Dima and Horses Dima came to the horse land. There are n horses living in the land. Each horse in ...
- 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)
[K8S]K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本) 写在前面 K8S集群部署成功了,如何对集群进行可视化管理呢?别着急,接下来,我们一 ...
- 数据结构之递归Demo(走迷宫)(八皇后)(汉诺塔)
递归 顾名思义,递归就是递归就是递归就是递归就是递归......就是递归 Google递归:
- JAVA设计模式之单例(singleton)
一.饿汉式 /** * 饿汉式 */public class Singleton01 { private static final Singleton01 instance = new Singlet ...
- CC2530定时器的应用
[例1]利用定时器计数实现5中彩灯的变化形式,基于模模式的.两个标志位,一个是定时器计数,一个是彩灯的状态. #include "ioCC2530.h" #define D3 P1 ...