Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Postgresql 使用 Pl/python实现邮件监控大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

目的:本项功能的目的是为了将数据库中某项内容监控的结果邮件出来提示给相关人员。

实现方式:@H_675_7@将数据库监控结果存储到监控记录表当中,使用PL/python@H_675_7@函数将记录表中的数据传入附件并将附件使用@H_236_11@mUTT@H_675_7@邮件发送给相关人员进行通知。

@H_675_7@环境准备:

linux: Release: 5.8 @H_675_7@版本

POSTGReqsl@H_675_7@:9.5.1 @H_675_7@版本

Python@H_675_7@版本:2.7.12

@H_888_0@mutt @H_675_7@版本号:1.4.2.2i

@H_675_7@一、安装POSTGResql

安装过程(略)

下载地址:https://www.POSTGResql.org/download/

@H_675_7@注意:在编译./configure@H_675_7@的时候记得加上 --with-python @H_675_7@这样在拓展python@H_675_7@的时候 直接拓展就OK@H_675_7@了

二、@H_675_7@安装python 2.7.12

@H_675_7@在官网上下载了python2.7.12

地址:https://www.python.org/getit/

@H_675_7@将安装包上传到服务器中并解压 @H_675_7@ 解压后会生成目录Python-2.7.12

进入目录编译安装

#./comfigure --prefix=/opt/python2.7.12 --enable-shared #@H_675_7@注意这个参数一定要带

#make

#make install

---@H_675_7@完成。

三、@H_675_7@安装@H_274_8@mUTT@H_675_7@邮件发送工具

@H_675_7@这里解释下为什么选择@H_274_8@mUTT@H_675_7@而不是linux@H_675_7@的@H_877_131@mail@H_675_7@或者xmail@H_675_7@?---@H_675_7@因为在刚开始使用xmail@H_675_7@向foxmail@H_675_7@发送附件的时候 foxmail@H_675_7@中接收不到附件 并且正文内容乱码,所以选用了更为简便的@H_877_131@mutt @H_675_7@来进行发送邮件。

@H_675_7@下载地址:http://www.mutt.org/download.html

@H_675_7@安装@H_274_8@mutt

#yum -y install mutt

四、@H_675_7@在POSTGResql@H_675_7@端用创建PL/python@H_675_7@拓展

#su - POSTGRes

#psql

#create extension plpythonu;

五、@H_675_7@编写调用操作系统@H_274_8@mutt@H_675_7@邮件命令的函数

5.1@H_675_7@首先是将监控记录表中信息通过copy@H_675_7@命令传入到文件中 send_mail_info @H_675_7@表为监控记录表,自行创建即可。

CREATE OR replaCE FUNCTION public.fc_copy_date(v text)

RETURNS text AS

$BODY$

try:

plpy.execute("copy send_mail_info to '/app/pgdata/pg951date/vIEw_test.xls'")

plpy.execute("SELEct fc_file_icon('%s')" % v)

except plpy.SPIError:

return "something went wrong"

else:

return "ok"

LANGUAGE plpythonu VolATILE

COST 100;

ALTER FUNCTION public.fc_copy_date(text)

owneR TO POSTGRes;

5.2@H_675_7@其中fc_file_icon@H_675_7@函数是用来转换文件编码的,因为从数据库中copy@H_675_7@出来的文件是utf-8@H_675_7@的邮件出来后是乱码,所以转换成了gb2312@H_675_7@的格式。

CREATE OR replaCE FUNCTION public.fc_file_icon(v text)

import commands

strs = args[0] #@H_675_7@接收函数传入命令

cmds ='iconv -f utf-8 -t gb2312 vIEw_test.xls > %s' % v

(status,output) = commands.getstatusoutput(cmds)

return output

ALTER FUNCTION public.fc_file_icon(text)

owneR TO POSTGRes;

5.3@H_675_7@这是由POSTGResql@H_675_7@调用操作系统命令@H_236_11@mutt@H_675_7@的一个函数,

CREATE OR replaCE FUNCTION public.fc_send_mail(text)

emadr ='xxxxx@xxx.com '

cmd1 = 'echo "@H_675_7@正文:xxxxx" | mutt -a ' + strs -----strs@H_675_7@为传入的文件名

emailx = ' -s "@H_675_7@主题:xxx" '+ emadr

cmds = cmd1 + emailx

ALTER FUNCTION public.fc_send_mail(text)

5.4@H_675_7@最后一个外层的函数调用这两个函数

-- Function: public.fc_sendmail_main(text)

-- DROP FUNCTION public.fc_sendmail_main(text);

CREATE OR replaCE FUNCTION public.fc_sendmail_main(v text)

RETURNS text AS

$BODY$

try:

plpy.execute("SELEct fc_copy_date('%s')" % v)

plpy.execute("SELEct fc_send_mail('%s')" % v)

except plpy.SPIError:

return "something went wrong"

else:

return "OK"

$BODY$

LANGUAGE plpythonu VolATILE

COST 100;

ALTER FUNCTION public.fc_sendmail_main(text)

owneR TO POSTGRes;

5.5@H_675_7@当需要发邮件的时候只需要执行这条命令即可

SELEct fc_sendmail_main(‘xxxx.sss’) @H_675_7@; ----- xxxx.sss@H_675_7@代表 文件名.@H_675_7@文件类型

@H_675_7@六、如若需要定时发送的话 @H_675_7@ 可以使用POSTGResql@H_675_7@的定时任务工具:pgAgent

Pgagent@H_675_7@的安装及使用(略):可参 我的上一篇文章:Pgagent@H_675_7@的安装及使用

大佬总结

以上是大佬教程为你收集整理的Postgresql 使用 Pl/python实现邮件监控全部内容,希望文章能够帮你解决Postgresql 使用 Pl/python实现邮件监控所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: