运维做了一段时间了,发现很多事情都是重复的,可以写成脚本代替每天重复无聊没意义的事情,这样就有时间研究更有意义的东西了
使用的ptyhon3.6
代码很简单,分两部分,
一部分是数据库查询结果生成exel
一部分是邮件发送
可以在本地跑,没问题放到服务器定时任务天天跑
# encoding=utf-8
import xlwt
import pymysql
class MYSQL:
def __init__(self):
pass
def __del__(self):
self._cursor.close()
self._connect.close()
def connectDB(self):
"""
连接数据库
:return:
"""
try:
self._connect = pymysql.Connect(
host='*****',
port=*******,
user='******',
passwd='*******',
db='*******',
charset='utf8'
)
return 0
except:
return -1
def export(self, output_path):
self._cursor = self._connect.cursor()
# 查询数据库要查询的数据
count = self._cursor.execute("select * from test")
print(count)
# 重置游标的位置
self._cursor.scroll(0, mode='absolute')
# 搜取所有结果
results = self._cursor.fetchall()
# 获取MYSQL里面的数据字段名称
fields = self._cursor.description
workbook = xlwt.Workbook()
sheet = workbook.add_sheet('table', cell_overwrite_ok=True)
# 写上字段信息
for field in range(0, len(fields)):
sheet.write(0, field, fields[field][0])
# 获取并写入数据段信息
row = 1
col = 0
for row in range(1, len(results)+1):
for col in range(0, len(fields)):
sheet.write(row, col, u'%s' % results[row-1][col])
workbook.save(output_path)
if __name__ == '__main__':
mysql = MYSQL()
flag = mysql.connectDB()
if flag == -1:
print('数据库连接失败')
else:
print('数据库连接成功')
mysql.export('D:\\Python\\exel\\houtaitousu.xls')
import yagmail
username = '*******@qq.com'#邮箱账号
passwd = '*********'#授权码,不是邮箱密码
mail = yagmail.SMTP(user=username,
password=passwd,
host='smtp.qq.com',#其他服务器就smtp.qq.com smtp.126.com
# smtp_ssl=True
) #如果用的是qq邮箱或者你们公司的邮箱使用是安全协议的话,必须写上 smtp_ssl=True
# mail.send(
# to=['*****@qq.com','*****@qq.com'], #如果多个收件人的话,写成list就行了,如果只是一个账号,就直接写字符串就行to='12345678@qq.com'
# cc='******@qq.com',#抄送
# subject='邮件标题',#邮件标题
# contents='邮件正文',#邮件正文
# attachments=[r'C:\a.txt',
# r'C:\b.txt'])#附件如果只有一个的话,用字符串就行
mail.send(
to=['****@qq.com'],
cc=['****@qq.com','***@chinaunicom.cn','***@chinaunicom.cn'],
subject='后台投诉',
contents='''
您好
后台投诉,详见附件
------------------
username:***
phone_number:*****
email: ********@qq.com
''',#邮件正文
attachments=['D:\\Python\\exel\\houtaitousu.xls']
)
print('邮件发送成功')