本文主要介绍在工作中怎么利用 python 脚本提升工作效率
背景
由于业务的特殊性,我们在全量数据跑批时,需要先对表记录做一些更新,共涉及到 28 张表。
前同事是完全纯手工处理的,先登录到 mysql 服务器,然后一条条执行 sql,那么他需要复制粘贴 28 次。
梳理
我接手之后,对这部分工作进行了梳理,特点如下:
- 内容不会变动,每次执行的 sql 都是一样的;
- 部分 sql 执行时间特别长。
基于以上梳理后,所以对此进行了脚本化改造,新特性如下:
- 自动化执行 28 条 sql;
- 引入钉钉任务成功通知、失败报警功能;
- 加入 check 机制,避免遗漏。
自动化脚本
# -*- coding: utf-8 -*-
"""
本脚本用于项目跑批时更新SQL
"""
import pymysql
import concurrent.futures
import requests
import time
from pymysqlpool import ConnectionPool
import logging
logging.basicConfig(filename='../sql.log',
filemode='a',
format='%(asctime)s %(levelname)s:%(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
level=logging.INFO)
connection_pool = ConnectionPool(pool_name='my_pool', host='', user='', password='',
db='', port=3306)
WEBHOOK_URL = "https://oapi.dingtalk.com/robot/send?access_token=..."
user = ''
def send_dingtalk(message):
# 钉钉机器人Webhook地址
webhook_url = WEBHOOK_URL
# 发送钉钉通知
headers = {
'Content-Type': 'application/json'}
data = {
'msgtype': 'markdown',
'markdown': {
'title': '## 全量跑批SQL通知',
'text': message
},
'at': {