美文网首页大数据 爬虫Python AI Sql
python3调用钉钉机器人读取mysql表的内容并发群通知

python3调用钉钉机器人读取mysql表的内容并发群通知

作者: 文艺小卿年 | 来源:发表于2020-02-07 08:48 被阅读0次

1. 开通钉钉机器人

需要首先在PC端开通钉钉机器人,打开想要开通的群聊 -> 群设置 -> 智能群助手 -> 添加机器人 -> 自定义

image.png
  • 对机器人进行设置(主要是安全设置)安全设置建议选择自定义关键字,最多可以设置10个关键字。设置后,消息中至少包含其中1个关键字才可以发送成功。更多关于安全设置请参见钉钉开放平台
image.png
  • 复制WebHook连接。
image.png

2. 程序说明

2.1 参数说明

# 数据库信息
host = sys.argv[1]
user = sys.argv[2]
passwd = sys.argv[3]
db = sys.argv[4]
# 查询sql
sql = sys.argv[5]
# 钉钉机器人的WebHook
api_url = sys.argv[6]

2.2 功能及设计思路说明

该脚本通过读取配置参数,连接mysql数据库查询表字段,并将结果以Markdown的形式发送到钉钉群

  • 效果如下:
image.png

2.3 程序代码

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys

import pandas as pd
import pymysql
import requests
import time
import json

# 数据库信息
host = sys.argv[1]
user = sys.argv[2]
passwd = sys.argv[3]
db = sys.argv[4]
# 查询sql
sql = sys.argv[5]
# 钉钉机器人的WebHook
api_url = sys.argv[6]

headers = {'Content-Type': 'application/json;charset=utf-8'}


def getData():
    text = "# 时间: %s\n" % time.strftime("%Y-%m-%d %X") + "- 数据情况如下:\n"
    conn = pymysql.connect(host, user, passwd, db, charset='utf8')
    try:
        data = pd.read_sql(sql, con=conn)
        # 获取查询结果的列名
        columns_data = data.columns.values.tolist()

        # 拼接要输出表格的表头
        for column in columns_data:
            text += "|     " + column + "\|"
        text = text[:-2]
        text += "\n" + "|:----" * len(columns_data) + "\n"

        # 将表格数据拼接为text
        data = data.values.tolist()
        for row in data:
            for cell in row:
                text = text + '|' + str(cell)
            text += '\n'
        # print(text)

    except Exception as e:
        print(e)
        print("Error: unable to fecth data")
    conn.close()
    return text


def msg(text):
    json_text = {
        "msgtype": "markdown",
        "markdown": {
            "title": "监控告警",
            "text": text
        }
    }
    print(requests.post(api_url, json.dumps(json_text), headers=headers).content)


if __name__ == '__main__':
    msg(getData())

2.4 不足说明以及改进方法

由于钉钉群显示Markdown时无法用css调整表格宽度,当字段名称及字段值宽度较小的时候,显示效果不是很好,可能造成显示拥挤。如下:


image.png
  • 改进方法:

可以在SQL语句查询时设置一个较长的别名显示出来。这样看起来比较清爽一点。

image.png

3. 常见错误

  • 校验不通过的消息将会发送失败,常见错误如下:
// 消息内容中不包含任何关键词,修改 安全设置->自定义关键词
{
  "errcode":310000,
  "errmsg":"keywords not in content"
}

// timestamp 无效
{
  "errcode":310000,
  "errmsg":"invalid timestamp"
}

// 签名不匹配,修改 安全设置->加签
{
  "errcode":310000,
  "errmsg":"sign not match"
}

// IP地址不在白名单,修改 安全设置->IP地址段
{
  "errcode":310000,
  "errmsg":"ip X.X.X.X not in whitelist"
}

相关文章

  • python3调用钉钉机器人读取mysql表的内容并发群通知

    1. 开通钉钉机器人 需要首先在PC端开通钉钉机器人,打开想要开通的群聊 -> 群设置 -> 智能群助手 -> 添...

  • jenkins集成钉钉机器人

    jenkins邮件通知不能及时的收到,所以采用了钉钉机器人 下载钉钉客户端,创建交流群并成为群主 创建钉钉机器人 ...

  • GitLab-代码审核

    设置钉钉 GitLab 机器人 打开钉钉,在需要配置 GitLab 机器人的群中,点击【群设置】→【智能群助手】→...

  • 之钉钉推送

    如果你希望通过钉钉接收信息通知(注意不是钉钉邮件,所有邮件操作已经在上一小节讲过) 在钉钉上设置一个群机器人,钉钉...

  • 用Oozie调度shell脚本操作ambari --- 以hiv

    测试oozie调用shell的可行性, 这里我以调用钉钉群机器人的方式进行测试. 使用ambari的web api...

  • Python_钉钉机器人

    一、打开钉钉群,添加自定义机器人,记住创建机器人的webhook即可。二、发送消息到钉钉群: 发送的消息类型参见钉...

  • 如何申请钉钉机器人接口

    钉钉群机器人 钉钉群机器人是一个高级扩展功能,只要有一个钉钉账号,就可以使用它。它可以将第三方信息聚合到钉钉群中,...

  • jenkins配置自动化打包-钉钉通知

    最近在弄jenkins配置安卓自动化打包,配置完成之后,添加了钉钉机器人,打包成功后,钉钉群会收到一个通知,...

  • cgai-DD钉钉群机器人python3 API

    一、简介 cgai-DD是专门处理钉钉群机器人的python3 API,支持官方提供的5种格式: 文本信息 网页链...

  • php 使用钉钉机器人推送消息

    钉钉群机器人定义 群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步...

网友评论

    本文标题:python3调用钉钉机器人读取mysql表的内容并发群通知

    本文链接:https://www.haomeiwen.com/subject/lxzpxhtx.html