博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 调用外部程序
阅读量:6253 次
发布时间:2019-06-22

本文共 2312 字,大约阅读时间需要 7 分钟。

一、下载 lib_mysqludf_sys:

下载地址:https://github.com/mysqludf/repositories

 

二、配置与使用:

 

1、解压之后,已经有了我们需要的 lib_mysqludf_sys.so 文件,不过默认是32位的,所以最好自己重新编译一下:

gcc -Wall -fPIC -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so

2、把 lib_mysqludf_sys.so 复制到 /usr/local/mysql/lib/plugin/ 文件中

3、打开 mysql 客户端,执行以下 sql 语句:

DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;DROP FUNCTION IF EXISTS sys_get;DROP FUNCTION IF EXISTS sys_set;DROP FUNCTION IF EXISTS sys_exec;DROP FUNCTION IF EXISTS sys_eval;CREATE FUNCTION lib_mysqludf_sys_info RETURNS STRING SONAME 'lib_mysqludf_sys.so';CREATE FUNCTION sys_get RETURNS STRING SONAME 'lib_mysqludf_sys.so';CREATE FUNCTION sys_set RETURNS INT SONAME 'lib_mysqludf_sys.so';CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so';CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys.so';

4、找到要操作的库,新建触发器:

DELIMITER $$USE `sailing`$$DROP TRIGGER /*!50032 IF EXISTS */ `pay_check_trig`$$CREATE    /*!50017 DEFINER = 'root'@'%' */    TRIGGER `pay_check_trig` AFTER INSERT ON `pay_record`     FOR EACH ROW BEGIN    DECLARE ret INT DEFAULT 999;     IF new.status = 1 THEN                SET ret = sys_exec(CONCAT('/mysql_udf/pay_ok.py ',new.playerId,' ',new.value));    END IF;    END;$$DELIMITER ;

5、在 linux 的 /mysql_udf/pay_ok.py 里写上如下代码:

#!/usr/bin/python#coding:utf-8import sysimport smtplibfrom email.mime.text import MIMETextmailto_list=['123456789@qq.com']mail_host="smtp.163.com"  #设置服务器mail_user="888888888@163.com"   #用户名mail_pass="123456"   #口令mail_postfix="163.com"  #发件箱的后缀def send_mail(to_list,sub,content):    me=u"sailing server"+"<"+mail_user+"@"+mail_postfix+">"    msg = MIMEText(content,_subtype='plain',_charset='gb2312')    msg['Subject'] = sub    msg['From'] = me    msg['To'] = ";".join(to_list)    try:        server = smtplib.SMTP()        server.connect(mail_host)        server.login(mail_user,mail_pass)        server.sendmail(me, to_list, msg.as_string())        server.close()        return True    except Exception, e:        print str(e)        print 'error'        return Falseif __name__ == '__main__':    playerid = sys.argv[1]    value = sys.argv[2]    send_mail(mailto_list,u"成功充值通知",u"玩家ID:%s 刚刚成功购买了 %s 个金币!" % (playerid,value))

6、向相应表中插入一条数据,测试一下。

 

三、关于其它 mysqludf 相关学习

更多资料,参考:http://www.taki.com.tw/blog/mysql-udf/

转载地址:http://jgusa.baihongyu.com/

你可能感兴趣的文章
【鲁班学院】干货分享!《面试必备之Mysql索引底层原理分析》
查看>>
第十一周项目0-是春哥啊
查看>>
poi做一个简单的EXCAL
查看>>
几种查询emacs帮助的办法
查看>>
Python_基础_(模块,time,random,os,sys,json,shelve,xml,序列化反序列化)
查看>>
异常:Project configuration is not up-to-date with pom.xml解决方案
查看>>
HDU2647 拓扑排序
查看>>
ThinkPHP/---微信支付PC流程
查看>>
JavaScript 05
查看>>
python 多线程编程之threading模块(Thread类)创建线程的三种方法
查看>>
实验三
查看>>
水仙花数
查看>>
P3308 [SDOI2014]LIS(最小割+退流)
查看>>
C语言作业--数据类型
查看>>
压位高精
查看>>
jsp 中对jar 包的引用
查看>>
python操作mysql数据库
查看>>
Yii: gii 403 Error you are not allowed to access this page
查看>>
计算汉字长度
查看>>
Codeforces 911E - Stack Sorting
查看>>