![7e8ec0593537e71974a536f60229bb51.png](https://i-blog.csdnimg.cn/blog_migrate/05b5f02e7ef3ea10503a050290fc0ddf.jpeg)
前面的文章我们写到了利用Python实现钉钉和邮件的数据推送,在数据处理这一块实现了对mysql和odps的数据获取和处理,可以满足常规业务大部分数据场景需求,在一家初创公司数据基础建设还不完善的时候,可以利用Python快速搭建一个简便的数据推送系统,提高数据的获取使用效率。这篇文章会系统的把这一块儿的内容完善(附上完整的代码),同时会完善数据报表直接写入邮件正文的代码(之前是直接写入Excel附件)。如果大家有更好的方法欢迎讨论交流。
主要目录如下:
一、主要流程
二、钉钉推送
1、添加机器人
2、数据准备
1)处理mysql数据
2)处理odps数据
三、邮件推送
1、发送邮件函数
2、数据处理
1)处理mysql数据
2)处理odps数据
3、数据结果写在邮件正文
4、mian()方法
四、报警机制
五、odps使用注意事项
1、连接odps
2、全表扫描配置
六、通用配置
七、常用Git指令
一、主要流程
![7dcb49b0d6640835a7adf0b53754c010.png](https://i-blog.csdnimg.cn/blog_migrate/8fa78de19fb28b9c077c81378d0bcab6.png)
本地.py文件Git上传至stash仓库,服务器端可以通过Git把.py文件下载至服务器,然后通过crontab设置定时任务执行对应的.py文件进行脚本推送
二、钉钉推送
1、添加机器人
![9f9b3a8103fb08fcd65ec07e6a69f687.png](https://i-blog.csdnimg.cn/blog_migrate/ff183de2d815b58cbc3918346a69faa4.png)
![8645aa9aa525afae34ad29e010d6893f.png](https://i-blog.csdnimg.cn/blog_migrate/06544907626df2debc586a7590785e24.jpeg)
![9e851b3226b763941ba4267c4444f745.png](https://i-blog.csdnimg.cn/blog_migrate/0ff593be57454cd35ae60883be142f50.jpeg)
需要安全设置,一般选择关键词,基本上都是推送中包含的特定关键词
![5cabdf78adc746010e1469b846c94188.png](https://i-blog.csdnimg.cn/blog_migrate/e1168c5e267f1f690a574862ff83d30e.png)
生成的钉钉链接不要泄露
https://oapi.dingtalk.com/robot/send?access_token=*********
具体可查看官方文档:https://ding-doc.dingtalk.com/doc#/serverapi2/krgddi
2、数据准备
使用Python来编写脚本
#导入第三方包
剩下就是处理数据然后传到message里面进行推送即可
1)处理mysql数据
首先连接和查询数据库还是依赖pymysql包,网上很多文章讲解,这里不多说,Python操作mysql得到的数据结果是一个元组
result : ((a,b),(c,d),(e,f),)
如果我们需要获取数据则根据索引取出对应的数据即可,
比如GMV:result([0][0]),得到结果a,其他数据以此类推
但是这里需要注意的是我们仅仅获取到了数据结果,但是这个数据是什么内容还没有得到,就是SQL结果的列名,这里需要我们手动拼一下。举一个日常的例子,销售相关的数据
【销售数据】
mes_gmv = 'GMV:' + result([0][0])
mes_order = '订单量:' + result([0][1])
这里我们拼了一个数据内容名称“销售数据”,然后拼了一个字段名称:GMV、订单量,这样我们推的数据表达什么意思就很清楚。
这个是一行一条数据的展示,实际工作中还会有数据的展示效果跟Excel一致,感兴趣的可以试试,对于这种规律可以用for循环遍历,大致效果如下:
日期 | GMV | 订单量 | 下单人数 | 销售件数
10.01 | 1000 | 10000 | 100000 | 20000
10.02 | 1000 | 10000 | 100000 | 20000
以上的拼接都要注意换行,要不然数据就全部挤在一行了
2)处理odps数据
相关文档:
PyODPS: ODPS Python SDK and data analysis frameworkpyodps.readthedocs.io Python SDK方法说明_Python SDK_SDK参考_MaxCompute-阿里云help.aliyun.com![e8421252616f9f82f459280984b93183.png](https://i-blog.csdnimg.cn/blog_migrate/c792f2c41149918b8ea9dfb9238d3f11.png)
#导入相关包
三、邮件推送
1、发送邮件函数
#导入需要的包
2、数据处理
1)处理mysql数据
#导入需要的包
上面这种方法是获取数据,然后分成每一个单元格遍历写入,这种遍历每个单元格写入数据的时候会出现因为包含特殊字符而报错,具体可查看sheet2的写法解决。另外还可以直接使用pandas来读取SQL然后获取df格式的数据,直接用pandas写入Excel,这样会更方便
#导入需要的包
2)处理odps数据
#主要是将字典形式的数据转换成需要的df格式
3、数据结果写在邮件正文
主要是DataFrame的to_html函数,不过需要注意的是在构建邮件的方法中要把正文的格式由"plain"改为"html",处理完之后优化CSS样式,得到想要的图表格式,然后再格式化数据结果就可以了
def
4、mian()方法
SQL在这里处理,原始SQL——>处理SQL——>写入Excel
def
四、报警机制
主要是创建一个邮件发送失败的函数,然后在数据推送的邮件执行失败的时候执行该函数即可,同时把错误信息在邮件正文生成。相较于发送失败邮箱,做失败的钉钉推送会更好,手机查看更方便,提示可便捷,感兴趣的可以自己尝试一下
import
五、odps使用注意事项
1、连接odps
"access_id":"access_id ",
"secret_access_key":"secret_access_key",
"project":"自己的项目空间名称",
"endpoint":"https://service.odps.aliyun.com/api"
2、全表扫描配置
from
六、通用配置
由于我们的脚本会很多,如果每次写脚本的时候都要把mysql配置、odps配置、邮箱配置写在脚本里面会比较重复,同时如果出现链接或者账号密码变更,修改起来非常不方便,这个时候把这些公共的模块单独配置在一个.py文件中就比较方便,即使修改也只修改配置文件就可以了。可以在一个配置文件,也可以每项内容一个配置文件,这里简便处理就放在一起展示。
# -*- coding:utf-8 -*-
在脚本中引用
#有的环境下不能主动识别配置文件路径,这时需要我们制定路径(即config所在路径)
七、常用Git指令
正常在stash创建Repositories会有完成的教学指导你如何将本地代码Git到仓库托管,这里说一下常用的指令
![f47eb095a542f30c38f1c006408a4d52.png](https://i-blog.csdnimg.cn/blog_migrate/0fc329c24e394c178ee7861255520c76.jpeg)
$ git add . 将改动点提交到暂存区(必须)
$ git status 查看修改文件状态(非必须)
$ git commit -m "备注信息" 用来正式提交变动,提交至 .git
$ git push 提交代码
$ git pull 从远程把代码拉到本地
$ git reset --hard HEAD^2 回滚版本,数字表示往前回滚几个版本
详细使用可以查看这篇文章:
从只会git add .的菜鸟到掌握git基本功能juejin.im最后感谢组里的小伙伴为完善这个简易系统做的努力和贡献,感谢在初期没有思路时网上各种大神的文章参考