flask获取数据传到前端echarts的基本框架
1、文件位置
echarts.htmll放在templates里,templates跟flask.py同级目录
2、flask.py
from flask import Flask,redirect,url_for,request,render_template,flash
from sqlalchemy import create_engine
import pymysql
app=Flask(__name__)
@app.route('/') //展示htnl
def opinion():
return render_template("echarts.html")
@app.route('/mysql', methods=['GET', 'POST']) //从数据库得到数据,返回json格式传送到前端
def mysql():
//用pymysql
//conn=pymysql.connect(host="localhost",port=3306,user="root",passwd="ZJM199933",db="stu",charset="utf8")
//cursor=conn.cursor()
//reslut=cursor.execute('select * from table');
//conn.close()
//用create_engine
engine = create_engine('sqlite:///./weibo.db', echo=True) //连接数据库
connect=engine.connect()
result = connect.execute('select * from table')
name=[]
data=[]
for item in result:
name.append(item[0])
data.append(item[1])
return {'gender': gender, 'data': data}
if __name__ == '__main__':
app.run('127.0.0.1', '5000', True)
http://127.0.0.1:5000/mysql
查看数据
如:
3、echarts.html
第一种data,是数组形式
data=[{value: 335, name: ‘xxx’}, {value: 335, name: ‘xxx’} ]
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>舆情报告</title>
<script src="/static/js/echarts.min.js"></script>
<script src="/static/js/china.js"></script>
<script src="/static/js/echarts-wordcloud.min.js"></script>
<script src="/static/js/jquery-3.5.1.min.js"></script>
</head>
<body>
<div id="xxx" style="width: 600px;height: 400px;"></div>
<script>
var my_chart = echarts.init(document.getElementById('xxx'));
$.post('/mysql', function (data) {
var data = [];
for (let i = 0; i < data.data.length; i++) {
data.push({
'value': data.data[i],
'name': data.name[i]
})
}
var option = {
...
series: [{
...
data: data
}]
};
my_chart.setOption(option);
});
</script>
</body>
</html>
第二种data,直接是数值
data: [820, 932, 901, 934, 1290, 1330, 1320]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>舆情报告</title>
<script src="/static/js/echarts.min.js"></script>
<script src="/static/js/china.js"></script>
<script src="/static/js/echarts-wordcloud.min.js"></script>
<script src="/static/js/jquery-3.5.1.min.js"></script>
</head>
<body>
<div id="xxx" style="width: 600px;height: 400px;"></div>
<script>
var my_chart = echarts.init(document.getElementById('xxx'));
$.post('/mysql', function (data) {
var option = {
....
series: [{
...
//data: data.数值名称
data: data.data //跟flask.py设置一致
}]
};
my_chart.setOption(option);
});
</script>
</body>
</html>