前天晚上十点, 给徒弟道晚安的时候, 发现她还在忙工作的事情,这么晚了都这么累了,还不让睡,很是心疼。
知道缘由之后,我想我可以做点什么
处理流程
1 连接数据库
2 执行sql
3 定时执行并写入数据到excel
4 绘制折线图
首先 连接数据库
#!/usr/bin/env python
#coding=utf-8
importpymysql
defmysql(host='192.168.1.58',
port=3306,
user='root',
passwd='112358',
db='mirror',
charset='utf8'):
conn=pymysql.connect(host=host,
port=port,
user=user,
passwd=passwd,
db=db,
charset=charset)
cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)
try:
yieldcursor
finally:
conn.commit()
cursor.close()
conn.close()
定义一个函数 执行sql并获取结果的条数
#执行sql
defexec_sql():
withmysql()ascursor:
#1上一天未结算订单统计
row_count1=cursor.execute(sql)
c_time=time.strftime("%H:%M",time.localtime())
m_x.append(c_time)
m_y.append(row_count1)
print('\n'.format(x轴=m_x,y轴=m_y))
定时一个函数 执行定时任务并写入excel
#设定定时每隔多长时间执行一次sql
defcron_exec():
foriinrange(,s):
exec_sql()
temp=[u'x轴的值','y轴的值']#设置表头
forpos,vinenumerate(temp):
table.write(,pos,v)#表头
table.write(i+1,,m_x[i])#第一列的值
table.write(i+1,1,m_y[i])#第二列的值
time.sleep(interval_time)#休眠60秒
file.save('lly.xls')#写入excel
绘制折线图
defmake_figure():
x=m_x# x轴的数据
y=m_y# y轴的数据
plt.figure()#创建绘图对象
plt.plot(x,y)#在当前绘图对象进行绘图
plt.xlabel("时间(s)")#X轴标签
plt.ylabel("数值(m)")#Y轴标签
plt.title("一个简单的折线图")#标题
plt.savefig("llb.png")#保存图象
启动脚本
if__name__=='__main__':
cron_exec()#执行定时任务,写入x,y轴对应数据,存入excel
make_figure()#绘图
好啦!完成了(因为是测试,时间间隔短,y轴的值没有变化,所以是水平线)
excel里则是类似这样的
完整脚本代码
#!/usr/bin/env python
#coding=utf-8
import matplotlib.pyplot as plt
from pylab import mpl
import pymysql
import contextlib
import time
import xdrlib,sys
import xlwt
file = xlwt.Workbook() # 新建一个Excel
# 新建一个sheet
table = file.add_sheet('info', cell_overwrite_ok=True)
m_x = [] # 初始化x轴的值
m_y = [] # 初始化y轴的值
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
# 解决保存图像是负号'-'显示为方块的问题
mpl.rcParams['axes.unicode_minus'] = False
# 待执行的sql语句
sql = "select name from company;"
# 定时时间间隔 单位:秒
interval_time = 10
# 执行次数
s = 3
# 定义上下文管理器,连接后自动关闭连接
@contextlib.contextmanager
def mysql(host='192.168.1.58',
port=3306,
user='root',
passwd='112358',
db='mirror',
charset='utf8'):
conn = pymysql.connect(host=host,
port=port,
user=user,
passwd=passwd,
db=db,
charset=charset)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
try:
yield cursor
finally:
conn.commit()
cursor.close()
conn.close()
# 执行sql
def exec_sql():
with mysql() as cursor:
#1 上一天未结算订单统计
row_count1 = cursor.execute(sql)
c_time = time.strftime("%H:%M",time.localtime())
m_x.append(c_time)
m_y.append(row_count1)
print('\n'.format(x轴=m_x, y轴=m_y))
# 设定定时每隔多长时间执行一次sql
def cron_exec():
for i in range(0, s):
exec_sql()
temp = [u'x轴的值', 'y轴的值'] # 设置表头
for pos, v in enumerate(temp):
table.write(0, pos, v) # 表头
table.write(i+1, 0, m_x[i]) # 第一列的值
table.write(i+1, 1, m_y[i]) # 第二列的值
time.sleep(interval_time) # 休眠60秒
file.save('lly.xls') # 写入excel
def make_figure():
x = m_x # x轴的数据
y = m_y # y轴的数据
plt.figure() #创建绘图对象
plt.plot(x,y) #在当前绘图对象进行绘图
plt.xlabel("时间(s)") #X轴标签
plt.ylabel("数值(m)") #Y轴标签
plt.title("一个简单的折线图") #标题
plt.savefig("llb.png") #保存图象
if __name__ == '__main__':
cron_exec() # 执行定时任务,写入x,y轴对应数据, 存入excel
make_figure() # 绘图
领取专属 10元无门槛券
私享最新 技术干货