python flask项目:python读取数据库sales_quarter = "select monthly,total_price from goods_train",其中monthly为日期(YYYY/MM形式),定义data[],将里面的monthly转换为季度date为单位并求出每年每季度的销售总额sales,然后将求出的date和sales存入data[],然后然后以json格式返回,在根据返回的data的数据用ajax赋值到echarts柱状图里,写出代码
时间: 2024-02-12 15:03:06 浏览: 22
好的,下面是代码示例:
```python
from flask import Flask, jsonify
import pymysql
app = Flask(__name__)
@app.route('/')
def index():
# 连接数据库
db = pymysql.connect(host='localhost', user='root', password='123456', db='test')
# 查询数据库
cursor = db.cursor()
sql = "select monthly, total_price from goods_train"
cursor.execute(sql)
results = cursor.fetchall()
# 处理数据
data = []
for result in results:
monthly = result[0]
total_price = result[1]
year_quarter = get_year_quarter(monthly) # 计算季度日期
if not any(d.get('date') == year_quarter for d in data):
data.append({'date': year_quarter, 'sales': total_price})
else:
for d in data:
if d['date'] == year_quarter:
d['sales'] += total_price
# 关闭数据库连接
db.close()
# 返回json格式数据
return jsonify({'data': data})
def get_year_quarter(monthly):
year, month = monthly.split('/')
month = int(month)
if month in [1, 2, 3]:
return f'{year} Q1'
elif month in [4, 5, 6]:
return f'{year} Q2'
elif month in [7, 8, 9]:
return f'{year} Q3'
else:
return f'{year} Q4'
```
在上面的代码中,我们首先连接数据库,然后查询指定的数据表。接着,我们遍历查询结果,计算季度日期,并根据季度日期求出每年每季度的销售总额。最后,我们将结果存入data列表中,并将其以json格式返回。
在Ajax请求中,我们可以通过以下方式将返回的数据渲染到Echarts柱状图中:
```javascript
$.get('/', function(data) {
var date = [], sales = [];
for (var i = 0; i < data['data'].length; i++) {
date.push(data['data'][i]['date']);
sales.push(data['data'][i]['sales']);
}
var myChart = echarts.init(document.getElementById('chart'));
var option = {
xAxis: {
type: 'category',
data: date
},
yAxis: {
type: 'value'
},
series: [{
data: sales,
type: 'bar'
}]
};
myChart.setOption(option);
});
```
在上面的代码中,我们通过Ajax请求获取到后端返回的数据并遍历data列表,将其分别存入date和sales列表中。接着,我们初始化Echarts图表,并设置x轴、y轴和数据系列。最后,我们将option设置到图表中,即可渲染出Echarts柱状图。