之前发过一个企业微信群机器人接口调用发提醒的文章,是用最简单的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)
以上代码先运行一下,确保没有问题:
下一步就是创建任务计划了,与使用VBS不同的同,VBS在widows操作系统里是可以直接执行的,但python需要先安装,并配置好环境变量,以保证脚本可以正常运行。
python安装步骤如下:
1、先到官网下载安装包:https://www.python.org/
2、运行安装程序,一路next直到安装完成就好了。这个时候直接在命令行输入python命令还是无法执行的,需要配置一下环境变量:
点击高级系统设置
点击“环境变量”
在“系统变量”里选择“Path”编辑
点击右上方“新建”按钮,输入Python.exe文件所在目录“C:Python27”
同理,在path环境变量中输入pip.exe文件所在目录“C:Python27Scripts”
点击确认。
至此,环境变量配置完毕。此时再在cmd命令行窗口中输入“python -v”命令,可看到对应的python版本信息,输入print "hello world"看到命令已经可以执行了。
至此,Windows10环境下的python2.7安装与配置完成!如果是安装其它的python版本,基本上也是类似的步骤。
验证一下,py文件是否可以正常运行,我们编辑一个名为helloworld.py 的文件,这个文件只有一句话:print "hello world!"
在命令窗口,切换路径到这个文件所在的文件夹,然后直接输出这个文件的名字,回车。如果执行成功,就说明python环境没有问题了。接下来就可以创建任务计划了。
可以通过搜索,打开任务计划程序
其它配置可根据需求调整,到这一步,一个用python脚本加上windows任务计划程序实现的企业微信机器人定时消息就完成了!
如果您也有类似需求,可以参考本文,欢迎交流讨论,顺手点个赞最好了。