应用场景当数据库中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.dllC:\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. 1.4.1 安装Python扩展库

    Python之所以得到各行业领域工程师.策划师以及管理人员的青睐,与涉及各行业各领域开发的扩展库也有很大关系,不仅数量众多.功能强大,关键是用起来很方便.虽然Python标准库已经拥有了非常强大的功能 ...

  2. visual studio code 安装python扩展

    Ctrl+P 调出控制台,在控制台里输入ext install python,点击第一个安装 如果出现: visual studio code connect ETIMEDOUT 191.238.17 ...

  3. 一步一步从PostgreSQL安装到delphi 访问

    今天,我们使用ubuntu 19 来安装PostgreSQL. 1.直接使用包安装 sudo apt-get install postgresql 按Y,直接安装. 安装完毕. 初次安装后,默认生成一 ...

  4. .windows安装使用这些偏底层的Python扩展太

    .windows安装使用这些偏底层的Python扩展太不爽了,怎么彻底解决 error: Unable to find vcvarsall.bat呢? 1.不要按网上说的,安装MinGW,然后在“.. ...

  5. linux和windows下安装python拓展包及requirement.txt安装类库

    python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...

  6. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  7. Visual Studio Code安装Python环境

    如何在全宇宙最强编辑器安装Python运行环境 (雾 首先安装Python2和Python3,如果只需要用到一个的话,直接安装即可运行,不存在转换问题. 安装Python扩展,直接搜索安装即可. 更改 ...

  8. 安装 python 爬虫框架 Scrapy

    官方安装说明文档:https://doc.scrapy.org/en/latest/intro/install.html#installing-scrapy 一.scrapy 需要以下依赖 二.一般来 ...

  9. window下python 扩展库安装 使用第三方镜像源

    0.前言     由于python的官方镜像位于国外,若使用pip或者easy_install安装第三方插件时或许会被限制,甚至连easy_install或pip也无法安装,例如在windows环境下 ...

随机推荐

  1. 教你如何快速让浏览器兼容es6

    写在正文前,本来这一节的内容应该放在第二节更合适,因为当时就有同学问ES6的兼容性如何,如何在浏览器兼容ES6的特性,这节会介绍一个抱砖引玉的操作案例. 为什么ES6会有兼容性问题? 由于广大用户使用 ...

  2. [机器学习实战-Logistic回归]使用Logistic回归预测各种实例

    目录 本实验代码已经传到gitee上,请点击查收! 一.实验目的 二.实验内容与设计思想 实验内容 设计思想 三.实验使用环境 四.实验步骤和调试过程 4.1 基于Logistic回归和Sigmoid ...

  3. 百度云BCH配置说明

    百度云虚拟空间(BCH)  来源:https://www.cnblogs.com/llll/p/7930029.html 参考资料:https://cloud.baidu.com/doc/BCH/Ge ...

  4. Cent OS 7 搭建MySQL

    搭建数据库服务器 版本众多,但为了追求稳定选择的是5.7 在使用YUM REPOSITORY官方给出的版本如下: The MySQL Yum repository includes the lates ...

  5. (第二篇)shell的简单了解

    Shell (类似开发工具) Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程 ...

  6. 李宏毅机器学习--PM2.5预测

    一.说明 给定训练集train.csv,要求根据前9个小时的空气监测情况预测第10个小时的PM2.5含量. 训练集介绍: (1).CSV文件,包含台湾丰原地区240天的气象观测资料(取每个月前20天的 ...

  7. java 之 jsp tomcat启动失败问题

    问题描述: 创建了一个helloServlet 代码如下 package Test; import java.io.IOException; import javax.servlet.ServletE ...

  8. .NET平台上的编译器不完全列表(转别)

    http://www.cnblogs.com/william_fire/archive/2005/05/15/155800.html最近因为开发需要,要研究一下.NET上基于C#扩展的编译器实现的框架 ...

  9. 手把手教你用Rancher创建产品质量数据库设置

    目标:在本文中,我们将介绍如何运行一个分布式产品质量数据库设置,它由Rancher进行管理,并且保证持久性.为了部署有状态的分布式Cassandra数据库,我们将使用Stateful Sets (有状 ...

  10. JavaWEB开发时FCKeditor类似office界面的ajax框架,加入后就能做界面类似office,能进行简单的文本编辑操作+配置手册...

    2019独角兽企业重金招聘Python工程师标准>>> FCKeditor是一款功能强大的开源在线文本编辑器(DHTML editor),它使你在web上可以使用类似微软Word 的 ...