加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

当数据库里面的价格改变时,发送信息到企业微信中

发布时间:2022-03-25 23:16:50 所属栏目:MySql教程 来源:互联网
导读:mysql insert 触发器 添加insert触发器,在insert一条新纪录时,当主单号不为空,并且新增价格和最近一次价格对比不相等时,说明价格有变化。这时触发器会自动将上一次老价格添加到当前新增行的unit_price_old老价格列。 这个需求是在一个表上,更新自己身
       mysql insert 触发器
       添加insert触发器,在insert一条新纪录时,当主单号不为空,并且新增价格和最近一次价格对比不相等时,说明价格有变化。这时触发器会自动将上一次老价格添加到当前新增行的unit_price_old老价格列。
 
       这个需求是在一个表上,更新自己身上的其他列,这时需要用before,并且set new.列名,并且new必须在等号左边。
  
delimiter //
create trigger update_flight_cabin_unit_price
before
update on czx
for each row
begin
if new.unit_price != old.unit_price then
set new.unit_price_old = old.unit_price;
set new.is_update_price = 'Y';
set new.update_price_time=now();
end if;
end //
delimiter ;
python脚本动态监听
#!/usr/bin/python
# -*- coding:utf8 -*-
# author: chenzhixin
from contextlib import contextmanager
import pymysql as mysqldb
import requests
import time
@contextmanager
def get_mysql_conn(**kwargs):
    """
    建立MySQL数据库连接
    :param kwargs:
    :return:
    """
    conn = mysqldb.connect(host=kwargs.get('host', 'localhost'),
                           user=kwargs.get('user'),
                           password=kwargs.get('password'),
                           port=kwargs.get('port', 3306),
                           database=kwargs.get('database')
  
    发送消息到企业微信
    :param dic:
    :return:
    """
    headers = {"Content-Type": "text/plain"}
    # s = "--石墨价格变化通知--n主单号:{waybill}n航班号:{flight_no}n航班日期:{flight_time}nn时间1:{unit_price_old_time}n-----------------------n价格1:{unit_price_old}n-----------------------n{creat}n主单号:{waybill}n价格变为: {unit_price}".format(
    #     waybill=dic['waybill'],
    #     unit_price_old=dic['unit_price_old'],
    #     unit_price_old_time=dic['unit_price_old_time'],
    #     creat=dic['creat'],
    #     unit_price=dic['unit_price']
    # )
    s = """
---石墨价格变化通知---
主单号:{waybill}
航班号:{flight_no}
航班日期:{flight_time}
时间1:{unit_price_old_time}
价格1:{unit_price_old}
时间2:{creat}
价格2:{unit_price}
    """.format(
        waybill=dic['waybill'],
        flight_no=dic['flight_no'],
        flight_time=dic['flight_time'],
        unit_price_old=dic['unit_price_old'],
        unit_price_old_time=dic['unit_price_old_time'],
        creat=dic['creat'],
        unit_price=dic['unit_price']
    )
    data = {
        "msgtype": "text",
        "text": {
            "content": s,
        }
    }
    r = requests.post(
        url='https://qyapi.weixin.qq.com/cgi-bin/webhook/sexxxd5-eb13',
        headers=headers, json=data)
    print(r.text)
def main():
    mysql_conn_args = dict(user='user1',
                           host='10.xx.xx.xx',
                           password='123456',
                           database='xxxxx')
    with get_mysql_conn(**mysql_conn_args) as mysql_conn:
        while True:
            print('正在监听价格是否有变化.....')
            # 1、首先获取mysql_flight_cabin_book_o_update表中有价格更新的所有行数据
            mysql_data_dic = get_mysql_flight_cabin_book_o_update_data(mysql_conn)
            # 2、其次遍历有价格变化的行数据,发送给企业微信
            for dic in mysql_data_dic:
                # 发送到企业微信
                send_to_qyweixin(dic)
                # 3、最后把mysql_flight_cabin_book_o_update表中的标记位is_update_price置为空
                update_flag_sql = "update flight_cabin_book_o_update set unit_price_old=null,unit_price_old_time=null where waybill='{}'".format(dic['waybill'])
                execute_mysql_sql(mysql_conn, update_flag_sql)
            time.sleep(60)
if __name__ == '__main__':
    main()

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读