Заполнение данных в диаграмму Pygal в приложении Python Flask - PullRequest
0 голосов
/ 26 февраля 2019

Я пытался научиться создавать веб-приложения 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

...