bcb6通过https接口post数据_python提取数据库数据并实现企业微信机器人定时消息推送...

a6bad7c953cfb6bc304de08acd33b734.png

之前发过一个企业微信群机器人接口调用发提醒的文章,是用最简单的VBS脚本+Windows任务计划来实现的,仅实现了定时发送固定内容的提醒。其实企业微信机器人就是一个webhook接口,用户以post data向这个Webhook地址发起HTTP POST 请求,即可实现给该群组发送消息了。
最近在使用python这个万能的胶水语言实现一些办公自动化的操作,顺便用python简单实现了一下定时读取数据库信息,然后通过机器人接口推送到群的小脚本。
提取数据的步骤是:
1、连接数据库(我用的是mssql)
2、查询需要的数据表信息
3、将数据集编码成为符合POST数据要求的字符串
4、调用webhook接口提交完成
这个脚本完成后,可以用两种方式实现定时任务。如果用的是windows操作系统,最方便可靠的就还是用任务计划。或者用python本身解决,方式有很多,比如:1.循环+sleep;2.线程模块中Timer类;
3.schedule模块;4.定时框架:APScheduler等等。
本着实用主义精神,我还是直接用任务计划了。

从数据库提取数据的脚本如下:

# encoding: utf-8
# 上面一行注释是为了防止中文字符乱码
import pymssql # 引入数据库操作组件
import requests # 引入http请求组件


# 发送消息函数
def postmsg(url, post_data):
    # post_data的格式要按照企业微信机器人配置说明里的的要求来,这次用的是markdown格式
    post_data = '{"msgtype" : "markdown", "markdown" : {"content": "%s"}}' % post_data
    
    print(post_data)

    if url == '':
        print('URL地址为空!')
    else:
        r = requests.post(url, data=post_data.encode())
        rstr = r.json()
        if r.status_code == 200 and 'error' not in rstr:
            result = '发送成功'
            return result
        else:
            return 'Error'


def querySQL():
    # 定义一个查询函数,把数据库连接配置放在一起,方便修改
    config_dict = {
        'user': 'sa',               # 数据库帐号
        'password': '**********',   # 数据库访问密码
        'host': '192.168.*.*',      # 数据库服务器IP
        'database': 'DataBaseName'  # 数据库名
    }

    def conn():
        connect = pymssql.connect(**config_dict)
        if connect:
            print("connect success!!!")
            return connect
        else:
            print("连接失败!请检查配置信息!")

    conn = conn()
    cursor = conn.cursor()
    sql = "select * from tablename order by 日期"  # 编写SQL查询字符串,tablename是表名
    cursor.execute(sql)
    row = cursor.fetchone()
    outmsg = "### 最近七天市场业绩:n"   # 给要发送的消息加个标题
    while row:
        outmsg = outmsg + r">日期:%s , 业绩:<font color = "warning">%d</font> , 店数:%s" % (row[0], row[1], row[2]) + "n"   # 要把从表中查到的信息重新组合成符合markdown格式的字符串
        row = cursor.fetchone()
    return outmsg  # 返回查到的信息
    cursor.close()
    conn.close()


if __name__ == '__main__':
    url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=*********" 
    # 这个是你要调用的机器人地址,在群里添加了机器人之后就会有这个地址了,每个机器人只有一个地址
    post_data = querySQL()
    # print(post_data)
    result = postmsg(url, post_data)
    print(result)

以上代码先运行一下,确保没有问题:

2d7884cc066fca5d440f614a86c30356.png

下一步就是创建任务计划了,与使用VBS不同的同,VBS在widows操作系统里是可以直接执行的,但python需要先安装,并配置好环境变量,以保证脚本可以正常运行。
python安装步骤如下:
1、先到官网下载安装包:https://www.python.org/

0cd727adf66debfe8626dd11ada05862.png

2、运行安装程序,一路next直到安装完成就好了。这个时候直接在命令行输入python命令还是无法执行的,需要配置一下环境变量:

7333bac9ebe4a9e56b83de9cd8a08c29.png

点击高级系统设置

ab9782fe96a70ca513263adeb05850b3.png

点击“环境变量”

c1edade19c0b904d95363162676150e9.png

在“系统变量”里选择“Path”编辑

1b65ce029802faa68e17c51dc2871920.png

4dcdfc350542d927c5fe0332b7babb60.png

点击右上方“新建”按钮,输入Python.exe文件所在目录“C:Python27”

2ae47c10cc3384f3644c45da4fc7cea0.png

同理,在path环境变量中输入pip.exe文件所在目录“C:Python27Scripts”

fc7d337a9586c59c4b8fde5b3622e712.png

点击确认。
至此,环境变量配置完毕。此时再在cmd命令行窗口中输入“python -v”命令,可看到对应的python版本信息,输入print "hello world"看到命令已经可以执行了。

c9bcbb76860a04ac50dcdc43f7df09ba.png

至此,Windows10环境下的python2.7安装与配置完成!如果是安装其它的python版本,基本上也是类似的步骤。
验证一下,py文件是否可以正常运行,我们编辑一个名为helloworld.py 的文件,这个文件只有一句话:print "hello world!"
在命令窗口,切换路径到这个文件所在的文件夹,然后直接输出这个文件的名字,回车。如果执行成功,就说明python环境没有问题了。接下来就可以创建任务计划了。

39755f20b163c70096e73c5ba92af799.png

可以通过搜索,打开任务计划程序

ba82787e301e0f6913d81cb6c0a8e050.png

dbfee344ad0a2ac748d07f9975a1fd19.png

74d5a5a7bdea2596bf48b9efd69c780b.png

60330ebe9cd1520647211193bd041201.png

其它配置可根据需求调整,到这一步,一个用python脚本加上windows任务计划程序实现的企业微信机器人定时消息就完成了!
如果您也有类似需求,可以参考本文,欢迎交流讨论,顺手点个赞最好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值