前言
在前段时间写的Flask+echarts+mysql可视化中初步实现了从数据库中读取数据在Web端展示的功能,这一篇主要概述一下我是怎么实现局部刷新图表这个功能的,在实战中仍然存在一些弊端,我后面会提到。
获取数据
util.py
def tao_data():
db = pymysql.connect(host='localhost', user='root', passwd='root', db='db_sea', port=3306, charset='utf8')
cur = db.cursor()
ad = "桃花"
lt = "2019-09-09 13:40:00"
do = round(random.uniform(0, 3), 2)
ph = round(random.uniform(7, 14), 2)
wt = round(random.uniform(20, 30), 3)
sal = round(random.uniform(20, 30), 2)
chl = round(random.uniform(0, 2), 2)
td = round(random.uniform(10, 40), 2)
sql = f"insert into env(ad,lt,do,ph,wt,sal,chl,td)VALUES('{ad}','{lt}',{do},{ph},{wt},{sal},{chl},{td})"
print(sql)
cur.execute(sql)
db.commit()
cur.close()
db.close()
# 这里写一个定时器,定时向数据库插入随机数据
sched = BackgroundScheduler()
sched.add_job(tao_data, 'interval', seconds=2, id='my_job_id')
sched.start()
这是数据库
刷新部分
clearInterval(timeId)
timeId = setInterval(function () {
$.ajax(....自己写
//重点来了,一定要禁止缓存,并且定时器要写在ajax外面才能达到效果
cache:false, //禁止局部刷新
);
},2000)
看看最终效果:
这个弊端在于交互相应速度很慢,这个系统设置了几个交换按钮,相应速度极慢,需要2-3s,欢迎大佬指正。