我一直在尝试学习如何创建Flask Web Apps以及如何从Azure SQL数据库读取数据。最终目标是将数据库表中的数据绘制为屏幕上的图表。我能够从数据库中检索数据,将其写入Pandas数据框,然后将图表(使用Pygal)呈现到页面上。
我不了解的是如何将数据框中的数据填充到图表中?
运行代码时,我的print(df)打印表的内容:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
loaded_ts quantity
0 2019-02-20 11:22:40.857 2
1 2019-02-20 11:23:10.760 2
2 2019-02-20 11:23:46.587 4
3 2019-02-20 11:25:10.183 3
4 2019-02-20 11:25:39.220 1
5 2019-02-21 09:50:04.667 4
6 2019-02-21 14:52:38.060 3
7 2019-02-21 15:52:56.750 5
8 2019-02-21 16:16:44.233 5
9 2019-02-21 16:19:09.193 1
10 2019-02-21 16:21:18.963 20
11 2019-02-22 15:11:22.053 3
12 2019-02-23 16:02:23.643 3
13 2019-02-23 16:03:03.573 1
14 2019-02-23 19:02:44.467 1
15 2019-02-21 09:42:38.390 1
16 2019-02-21 09:43:13.543 4
17 2019-02-21 19:36:56.313 1
18 2019-02-21 14:38:23.990 5
19 2019-02-21 14:38:35.870 6
20 2019-02-21 14:41:59.570 1
21 2019-02-21 14:42:08.890 3
22 2019-02-21 15:46:30.323 5
23 2019-02-21 15:10:05.033 3
24 2019-02-21 15:46:13.167 3
main.py的内容如下所示。
from flask import Flask, render_template
import pandas as pd
import pandas.io.sql as psql
from os import getenv
import pymssql
import pygal
server = "SERVER"
user = "USER"
password = "PASSWORD"
conn = pymssql.connect(server, user, password, "DB", port=1433)
cursor = conn.cursor()
app = Flask(__name__)
@app.route('/')
def db_route():
# create query to table
sql_query = "SELECT loaded_ts, quantity FROM dbo.QUANTITIES"
# fill dataframe
df = psql.read_sql(sql_query, conn)
df.columns = ["loaded_ts", "quantity"]
print(df) # printing df content to console
bar_chart = pygal.Bar()
bar_chart = bar_chart.render_data_uri()
return render_template('index.html',
chart=bar_chart)
if __name__ == '__main__':
app.run()
我知道我缺少以下行数据框中填充图表的部分:
bar_chart = pygal.Bar()
但是我只是不知道如何。 HTML页面会将图表呈现到:
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
<div id="chart">
<embed type="image/svg+xml" src= {{ chart|safe }} />
</div>
</body>
</html>
当前正在显示轴并说“无数据”(这是意料之中的,因为我不知道如何填充数据。
感谢您的帮助! / K