Заполнение данных в диаграмму Pygal в приложении Python Flask
Я пытался научиться создавать веб-приложения Flask и читать данные из базы данных SQL Azure. Конечная цель - построить данные из таблицы базы данных в виде диаграммы на экране. Я могу извлечь данные из базы данных, записать их в кадр данных 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