Wie bekomme ich die Ergebnisse der Datenbank abfrage in den Highchart Teil? In der app.route('/data') werden die Arrays Series1 und Series2 erzeugt, die sollen in der app.route('graph') in den Teil "data": [1,2,3] zu "data":[series1] werden. Da es jedoch zwei verschiedene app.route sind, weiß ich nicht wie ich da untereinander kommuniziere oder wie ich das sonst zusammen bringe.(. Die Arrays werden richtig erzeugt und das Chart mit den manuellen Daten funktioniert auch.
Hier der Code zum Verständnis:
Code: Alles auswählen
from flask import Flask, render_template
import sqlite3
from datetime import datetime
app = Flask(__name__)
@app.route('/data')
def auslesen():
database = ("fuellstand.db")
series1 = []
series2 = []
# con = connection c = coursor
con = sqlite3.connect(database)
c = con.cursor()
c.execute("SELECT timestamp, liter, prozent FROM fuellstand")
data = c.fetchall()
print("Datenbank ausgelesen")
print(data)
##Versuchen ein Datenarray zu erzeugen
for row in data:
timestamp = row[0]
volumen = row[1]
series1.append({'x': (datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')), 'y': volumen})
for row in data:
timestamp = row[0]
prozent = row[2]
series2.append({'x': (datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')), 'y': prozent})
con.commit()
con.close()
print(series1)
print(series2)
return render_template(series1=series1, series2=series2)
@app.route('/graph')
def graph(chartID='chart_ID', chart_type='line', chart_height=500):
chart = {"renderTo": chartID, "type": chart_type, "height": chart_height,}
series = [{"name": 'Label1', "data": [1, 2, 3]}, {"name": 'Label2', "data": [4, 5, 6]}]
charttitle = {"text": 'Füllstand'}
xAxis = {"type": 'datetime'}
yAxis = {"title": {"text": 'Liter'}}
return render_template('chart.html', chartID=chartID, chart=chart, series=series, charttitle=charttitle, xAxis=xAxis,
yAxis=yAxis)
if __name__ == '__main__':
app.run(debug=True)