Python 读取Mysql数据库,发送钉钉机器人消息(笔记)

数据库:mysql
告警信息库:qc_device_alarm
关联设备库:qc_device_devauth
机器人数据库:qc_system_talkclient
特定数据库环境,我自己记录一下,对读者参考性不大

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pymysql
import json 
import time
import logging
import requests
import sys
 
username = "yk003"
verbose = False
mysqlhost="你自己的"
mysqluser="你自己的"
mysqlpassword="你自己的" 
mysqlport=3306
mysqldatabase="qcwulian"
mysqlcharset='utf8'
#发送钉钉消息
def ding_send(taoken,smscontent):
    webhook = "https://oapi.dingtalk.com/robot/send?access_token="+str(taoken)
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    data = {
        "msgtype": "link",
        "link": {
            "text": "内容",
            "title": "标题",
            "picUrl": "图片连接",
            "messageUrl": "你需要发布的连接地址"
        }
    }
    r = requests.post(webhook,data = json.dumps(data),headers=headers)
    return r.text

#读取数据库中告警记录
def mysql_alarm():
    db = pymysql.connect(mysqlhost,mysqluser,mysqlpassword,port=mysqlport,database=mysqldatabase,charset=mysqlcharset)
    cursor = db.cursor(cursor =pymysql.cursors.DictCursor)
    
    jsonpayload=json.loads(payload)
    //读取告警数据库判断是否已经发送
    sql = """SELECT * FROM `qc_device_alarm` LEFT JOIN `qc_device_devauth` AS auth ON `qc_device_alarm`.`clientid` = `auth`.`clientid` WHERE `qc_device_alarm`.`status` =0  and  `qc_device_alarm`.`ding` =0""" 
    try: 
        cursor.execute(sql)
        result = cursor.fetchall()  
        if len(result)>0: 
          for row in result: 
             sql2= """SELECT * FROM `qc_system_talkclient`  WHERE `status` =1  and  `corp_id` =‘"""+str(result['corp_id'])+"""'""" 
             cursor.execute(sql)
             result_send = cursor.fetchall()
             if len(result_send)>0:
                  for row_send in result_send: 
                #UPDATE `qcwulian`.`qc_device_alarm` SET `status`=1 WHERE `id`=4;
                      ding_send(row_send['webhook'],result['describe'])
                  sql2 = """UPDATE qc_device_alarm SET ding=1,update_time="""+str(int(time.time()))+""" WHERE id="""+str(result['id']) 
                  try:
                    cursor.execute(sql2)
                     # 提交到数据库执行
                    db.commit()
                  except:
                     # 发生错误时回滚
                    db.rollback()
                   #print(str(sql2))

    except:
        print("Error: unable to fecth data")
    
    
    cursor.close()
    db.close()
 
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
发送图片到机器人,可以使用机器人的自定义机器人API接口。下面是一个发送图片的示例代码: ```python import requests url = 'https://oapi.dingtalk.com/robot/send?access_token=<your_access_token>' headers = { 'Content-Type': 'application/json;charset=utf-8' } data = { "msgtype": "image", "image": { "media_id": "<media_id>" } } response = requests.post(url, headers=headers, json=data) print(response.text) ``` 其中,`<your_access_token>` 是你的机器人的访问令牌,`<media_id>` 是你要发送的图片的media_id。可以使用提供的上传图片接口(https://oapi.dingtalk.com/media/upload?access_token=ACCESS_TOKEN&type=image)上传图片并获取media_id。 除了发送图片,还可以发送文本、链接、Markdown等不同类型的消息。下面是一个发送Markdown消息的示例代码: ```python import requests url = 'https://oapi.dingtalk.com/robot/send?access_token=<your_access_token>' headers = { 'Content-Type': 'application/json;charset=utf-8' } data = { "msgtype": "markdown", "markdown": { "title": "标题", "text": "## 标题二 \n\n **加粗文本** \n\n *斜体文本* \n\n [链接](http://www.baidu.com)" } } response = requests.post(url, headers=headers, json=data) print(response.text) ``` 其中,`title` 是消息标题,`text` 是Markdown格式的消息内容。 以上是发送图片和Markdown消息的示例代码,你可以根据自己的需求修改代码和消息类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值