Seite 1 von 2
Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 16:36
von Hypec
Hallo,
Ich habe mal wieder ein Problem mit meinen Grafiken.
Mein Ziel ist es zum einen 3 Buttons zu haben wo ich die Länge meiner Grafik bestimmen kann und Gleichzeitig eine select Liste in der ich auswählen kann von welcher Messstation die Grafik sein soll. Mein Problem jetzt ist das ich momentan nur entweder oder habe. Wenn ich die Länge meiner Grafik auswähle und danach die Station auswählen möchte dann wird die Länge meiner Grafik wieder auf den Standard zurück gesetzt. Umgekehrt ist es das selbe, kann mir hier jemand weiter helfen.
Code: Alles auswählen
mess_id = "1"
if request.method == 'POST':
if 'mess_id' in request.form:
mess_id = request.form['mess_id']
ask_length = "96"
start_src_ask = 1
else:
mess_id = mess_id
last = request.form['last']
if last == 'tag':
ask_length = "96"
start_src_ask = 1
elif last == 'woche':
ask_length = "672"
start_src_ask = 1
else:
ask_length = "2880"
start_src_ask = 1
if start_src_ask == 1:
plot_luft = [make_plot(mess_id, 'luftfeuchtigkeit', '1', ask_length, '2018-01-01_00:00', '2019-01-01_00:00')]
plot_temp = [make_plot(mess_id, 'temperatur', '1', ask_length, '2018-01-01_00:00', '2019-01-01_00:00')]
plot_erde = [make_plot(mess_id, 'erdfeuchtigkeit', '1', ask_length, '2018-01-01_00:00', '2019-01-01_00:00')]
plot_lux = [make_plot(mess_id, 'lux', '1', ask_length, '2018-01-01_00:00', '2019-01-01_00:00')]
Code: Alles auswählen
<form method="post" >
<div class="topnav">
<button class="button" type="submit" value="tag" id="tag" name="last">Letzter Tag</button>
<button class="button" type="submit" value="woche" id="woche" name="last">Letzte Woche</button>
<button class="button" type="submit" value="monat" id="monat" name="last">Letzter Monat</button>
<div class="topnav-right">
<select name="mess_id" onchange='this.form.submit()'>
<option value="1" selected>Station 1</option>
<option value="2">Station 2</option>
<option value="3">Station 3</option>
</select>
</div>
</div>
</form>
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 16:44
von Sirius3
Die Einrückungen passen überhaupt nicht. Eingerückt wird in Python immer mit 4 Leerzeichen pro Ebene. Das solltest Du so langsam nach 160 Posts hier draufhaben.
Du mußt die bereits eingetragenen Werte Deim Generieren Deiner <form> natürlich wieder eintragen. Aber den Teil zeigst Du ja gar nicht.
POST ist der falsche Modus, wenn Du nur eine Grafik abfragen willst.
Wenn man nur ein Bild aktualisieren will, würde man das heutzutage auch mit Javascript lösen.
Warum steht `mess_id` nicht immer in den form-Daten? Was soll das mess_id = mess_id??
`ask_length` sieht aus wie eine Zahl ist aber ein String?
Was soll eigentlich dieses `start_src_ask` das immer 1 ist und was sollen die plot_xxx-Listen, die immer nur ein Element enthalten?
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 16:49
von __blackjack__
@Hypec: Du darfst halt nicht im <form> die erste Station grundsätzlich hart als Ausgewählt auszeichnen, sondern musst das als Wert auch wieder zurück ins Template bringen und da dann dynamisch das `selected`-Attribut setzen. Mit `last` hast Du dann um Grunde das gleiche Problem, wobei man das mit den Buttons so nicht so einfach lösen kann. Wobei ich auch ein kleines bisschen überrascht bin, dass das so überhaupt funktioniert und Du nicht für den Namen `last` immer alle drei Werte bekommst.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 16:55
von Hypec
Das mit dem einrücken Tut mir Leid das sieht hier nur so aus da ich es aus einem Größeren Code raus kopiert habe wo es in tieferen Ebenen drin ist. Im Orginalcode ist es Richtig Formatiert.
Ich verstehe nicht genau welchen Teil du hier meinst?
Ich will hier mit Post Parameter bekommen welche ich anschließend dazu nütze eine Grafik zu Generieren.
Das mess_id = mess_id ist wohl ein fehlgeschlagener Versuch die mess_id Variabel zu übertragen.
`ask_length` ist ein String da ich in ein SQL Statment keine Zahlen sondern nur Strings einfügen kann deshalb wird das hier als String behandelt.
start_src_ask ist die abfrage ob die Variabeln eingegeben wurden um nur dann die Grafiken zu Generieren und ist Standardmässig eine 0.
Die listen ist die in bokeh übliche Art eine Grafik zu erstellen. 'make_plot' hat 2 returns.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 17:00
von Hypec
Wenn ich das selected weg lasse wird immernoch automatisch die erste Station wieder ausgewählt. Wie meinst du das ich soll dort dynamisch das select Atributt setzten. Soll ich dort über eine Variabel das ganze wieder Mitübertragen oder wie war das gemeint.
Warum sollte ich immer alle 3 Werte von den Buttons bekommen ich kann ja immer nur einen Nützen welcher dann den vorherigen Wert überschreibt.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 17:49
von Sirius3
Hypec hat geschrieben: Samstag 22. Juni 2019, 16:55
Im Orginalcode ist es Richtig Formatiert.
Das kann nicht sein, beim Kopieren werden aus 4 nicht 3 Leerzeichen!
Hypec hat geschrieben: Samstag 22. Juni 2019, 16:55
Ich will hier mit Post Parameter bekommen welche ich anschließend dazu nütze eine Grafik zu Generieren.
Ist schon klar, trotzdem ist POST die falsche Methode.
Hypec hat geschrieben: Samstag 22. Juni 2019, 16:55
`ask_length` ist ein String da ich in ein SQL Statment keine Zahlen sondern nur Strings einfügen kann deshalb wird das hier als String behandelt.
Das läßt erahnen, dass Du da sehr viel falsch machst. Man formatiert keine Werte in SQL-Strings!
Hypec hat geschrieben: Samstag 22. Juni 2019, 16:55
Die listen ist die in bokeh übliche Art eine Grafik zu erstellen. 'make_plot' hat 2 returns.
Auch wenn die Funktion zwei Rückgabewerte hat, macht eine einelementige Liste trotzdem keinen Sinn.
Nochmal zum eigentlichen Problem: bokeh benutzt schon Javascript und kann dynamisch Parameter abfragen. Nutze das auch.
Umgekehrt, wenn Du wirklich mit Formularen arbeiten willst, dann mußt Du sie dynamisch aus einem Template mit den bereits gesetzten Werten erzeugen. Möglicherweise auch mit versteckten <input>-Elementen.
@__blackjack__: bei submit-Buttons wird nur der Wert des Knopfes übertragen.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 18:04
von Hypec
Ja ich habe das ganze kopiert und da dann ja elemente in der 3 Ebene 12 Leerzeichen drin sind habe ich diese von Hand an den den Rand gerückt. Dabei ist das ganze vlt. ein bisschen verutscht.
Was ist dann die Richtige Methode ich frage ja um es besser machen zu können.
Code: Alles auswählen
cur.execute("SELECT id, messstation_id, werttyp_id, timestamp, wert from messung WHERE messstation_id = ? ORDER BY timestamp DESC, werttyp_id ASC LIMIT ?;", [mess_id, length])
Wie soll ich dann hier diese Daten bekommen?
https://davidhamann.de/2018/02/11/integ ... lask-ajax/
Ich habe mich an diesem Toturial orientiert. Hast du eine andere Lösung wie ich das ganze in meine Webseite implementieren kann?
Wie soll ich ein verstecktes <input> Element verstehen?
Hier mal noch die Funktion mit der ich die Grafiken generiere. Falls es Verbesserungsvorschläge gibt sehr gerne.
Code: Alles auswählen
PLOTS = {
'luftfeuchtigkeit': {
'label1': 'Luftfeuchtigkeit innen',
'label2': 'Luftfeuchtigkeit ausen',
'ylabel': 'Luftfeuchtigkeit in %',
'werttypone': 1,
'werttyptwo': 3
},
'temperatur': {
'label1': 'Temperatur innen',
'label2': 'Temperatur ausen',
'ylabel': 'Temperatur in °C',
'werttypone': 2,
'werttyptwo': 4
},
'erdfeuchtigkeit': {
'label1': 'Erdfeuchtigkeit',
'ylabel': 'Erdfeuchtigkeit',
'werttypone': 5
},
'lux': {
'label1': 'Lichtitensität(lux)',
'ylabel': 'Lichtitensität in Lux',
'werttypone': 6
},
}
def make_plot(mess_id, datatype, ask_type, ask_length, start, end):
time = []
wertone = []
werttwo = []
plot_data = PLOTS[datatype]
conn = sqlite3.connect('data.db')
print ("Opened database " + datatype + " successfully")
cur = conn.cursor()
length = int(ask_length) * 6
if ask_type == "1" :
cur.execute("SELECT id, messstation_id, werttyp_id, timestamp, wert from messung WHERE messstation_id = ? ORDER BY timestamp DESC, werttyp_id ASC LIMIT ?;", [mess_id, length])
elif ask_type == "2":
cur.execute("SELECT id, messstation_id, werttyp_id, timestamp, wert from messung WHERE timestamp BETWEEN ? AND ? ORDER BY timestamp DESC, werttyp_id ASC;", (start, end))
rows = cur.fetchall()
for row in rows:
if plot_data['werttypone'] == row[2] in row:
time.append(row[3])
wertone.append(row[4])
if 'werttyptwo' in plot_data:
if plot_data['werttyptwo'] == row[2] in row:
werttwo.append(row[4])
conn.commit()
conn.close()
time.reverse()
wertone.reverse()
if 'werttyptwo' in plot_data:
werttwo.reverse()
datetimes = [datetime.datetime.strptime(d, '%Y-%m-%d %H:%M') for d in time]
df = pd.DataFrame(time, columns=['date'])
df.loc[:, 'date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M')
plot = figure(plot_height=300, x_axis_type='datetime', sizing_mode='scale_width', tools="save", toolbar_location=None)
source = ColumnDataSource(data=dict( date=df['date'], wertone=wertone))
plot1 = plot.line('date', 'wertone', line_width=2, source=source, legend=plot_data['label1'])
if datatype == 'luftfeuchtigkeit' or datatype == 'temperatur':
source = ColumnDataSource(data=dict( date=df['date'], wertone=wertone, werttwo=werttwo))
plot2 = plot.line('date', 'werttwo', line_width=2, source=source, legend=plot_data['label2'], color="firebrick")
hover = HoverTool(
tooltips=[('Uhrzeit:', '@date{%d.%m.%Y %H:%M}'), (plot_data['label1'], '@wertone{0.00}') ],
formatters={'date' : 'datetime',},
mode='vline'
)
if datatype == 'luftfeuchtigkeit' or datatype == 'temperatur':
hover.renderers=[plot2]
hover.tooltips=[('Uhrzeit:', '@date{%d.%m.%Y %H:%M}'), (plot_data['label1'], '@wertone{0.00}'), (plot_data['label2'], '@werttwo{0.00}') ]
else:
hover.renderers=[plot1]
plot.add_tools(hover)
plot.xaxis.formatter=DatetimeTickFormatter( hours=["%H:%M"], days=["%d.%m.%Y %H:%M"], months=["%d.%m.%Y %H:%M"], years=["%d.%m.%Y %H:%M"])
plot.xaxis.major_label_orientation = pi/5
plot.yaxis.axis_label = plot_data['ylabel']
plot.legend.location ="top_left"
plot.legend.click_policy="hide"
script, div = components(plot)
return script, div
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 18:31
von Sirius3
Also doch eher, wie ich zuerst vermutet habe. Dass asktype ein String ist, ist eher eine schlechte Wahl der Typen, bzw. ganz überflüssig, weil man das mit speziellen Werten (None) für start, bzw. end auch erledigen könnte.
Dass `ask_length` ein String ist, ist total falsch, da Du ihn ja selbst in ein int umwandelst.
Beim SELECT solltest Du bereits nach den wert-Typen filtern. Das magische *6 bei der Länge würde dann auch anders sein.
Cursor-Objekte sind Iteratoren über die Ergebniseinträge, das fetchall ist also unnötig.
Weißt Du was `plot_data['werttypone'] == row[2] in row` bedeutet? Dann denk nochmal darüber nach und bring das in Ordnung.
Das commit ist unnötig.
Das Datum sollte Deine Plot-Routine doch selbst machen und was Du da mit dem Dataframe, entzieht sich meinem Verständnis.
Statt Teile zu posten, die Du dann anders einrücken willst, solltest Du alle relevanten Teile des Codes zeigen.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 20:02
von Hypec
Oke das obere alles mit asktype und asklength habe ich alles behoben.
Was soll ich dann statt fetchall machen kann ich mit einer for schleife direkt durch einen Cursor gehen?
Ja ich weiß was `plot_data['werttypone'] == row[2] in row` bedeutet. Was meinst du ist daran falsch soll ich dem row einen anderen Namen geben oder was ist das Problem.
commit hab ich entfernt.
Was genau meinst du mache ich zu viel bzw. falsch bei dem Datum? Und was ist unklar bei dem Rest?
Oke hier dann die volle Version von meinem Code:
Code: Alles auswählen
@app.route('/dashboard/<id>', methods=['GET', 'POST'])
def dashboard(id):
if 'username' in session:
start = "2018-01-01_00:00"
end = "2019-01-01_00:00"
data_one = ""
datatype = ""
ask_length = 0
plot_luft = plot_temp = plot_erde = plot_lux = plot_luft_z = plot_temp_z = plot_erde_z = plot_lux_z = []
start_src = 0
start_src_ask = 0
mess_id = "1"
if request.method == 'GET':
ask_length = 96
start_src_ask = 1
elif request.method == 'POST':
if 'mess_id' in request.form:
mess_id = request.form['mess_id']
ask_length = 96
start_src_ask = 1
elif 'last' in request.form:
last = request.form['last']
if last == 'tag':
ask_length = 96
start_src_ask = 1
elif last == 'woche':
ask_length = 672
start_src_ask = 1
else:
ask_length = 2880
start_src_ask = 1
elif 'date' in request.form:
ask_length = 1
start_date = request.form['start_date']
start = start_date + "_00:00"
end_date = request.form['end_date']
end = end_date + "_00:00"
data_one = 2
start_src = 1
#letzter tag
datatype = ""
start_src_ask = 1
if start_src_ask == 1:
plot_luft = [make_plot(mess_id, 'luftfeuchtigkeit', ask_length, None, None)]
plot_temp = [make_plot(mess_id, 'temperatur', ask_length, None, None)]
plot_erde = [make_plot(mess_id, 'erdfeuchtigkeit', ask_length, None, None)]
plot_lux = [make_plot(mess_id, 'lux', ask_length, None, None)]
if start_src == 1:
plot_luft_z = [make_plot(mess_id, 'luftfeuchtigkeit', 96, start, end)]
plot_temp_z = [make_plot(mess_id, 'temperatur', 96, start, end)]
plot_erde_z = [make_plot(mess_id, 'erdfeuchtigkeit', 96, start, end)]
plot_lux_z = [make_plot(mess_id, 'lux', 96, start, end)]
plot_luft = [make_plot(mess_id, 'luftfeuchtigkeit', 96, None, None)]
plot_temp = [make_plot(mess_id, 'temperatur', 96, None, None)]
plot_erde = [make_plot(mess_id, 'erdfeuchtigkeit', 96, None, None)]
plot_lux = [make_plot(mess_id, 'lux', 96, None, None)]
return render_template('dashboard.html', mess_id=mess_id, plot_luft=plot_luft, plot_temp=plot_temp, plot_erde=plot_erde, plot_lux=plot_lux, data_one=data_one, plot_luft_z=plot_luft_z, plot_temp_z=plot_temp_z, plot_erde_z=plot_erde_z, plot_lux_z=plot_lux_z)
else:
return redirect(url_for('index'))
def make_plot(mess_id, datatype, ask_length, start, end):
time = []
wertone = []
werttwo = []
plot_data = PLOTS[datatype]
conn = sqlite3.connect('data.db')
print ("Opened database " + datatype + " successfully")
cur = conn.cursor()
if plot_data['werttyptwo'] != None:
length = ask_length * 2
else:
length = ask_length
if start == None or end == None :
cur.execute("SELECT id, messstation_id, werttyp_id, timestamp, wert from messung WHERE messstation_id = ? AND werttyp_id = ? OR werttyp_id = ?ORDER BY timestamp DESC, werttyp_id ASC LIMIT ?;", [mess_id, plot_data['werttypone'], plot_data['werttyptwo'], length])
else:
cur.execute("SELECT id, messstation_id, werttyp_id, timestamp, wert from messung WHERE timestamp BETWEEN ? AND ? ORDER BY timestamp DESC, werttyp_id ASC;", (start, end))
rows = cur.fetchall()
for row in rows:
if plot_data['werttypone'] == row[2] in row:
time.append(row[3])
wertone.append(row[4])
if plot_data['werttyptwo'] == row[2] in row:
werttwo.append(row[4])
conn.close()
time.reverse()
wertone.reverse()
if 'werttyptwo' in plot_data:
werttwo.reverse()
datetimes = [datetime.datetime.strptime(d, '%Y-%m-%d %H:%M') for d in time]
df = pd.DataFrame(time, columns=['date'])
df.loc[:, 'date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M')
plot = figure(plot_height=300, x_axis_type='datetime', sizing_mode='scale_width', tools="save", toolbar_location=None)
source = ColumnDataSource(data=dict( date=df['date'], wertone=wertone))
plot1 = plot.line('date', 'wertone', line_width=2, source=source, legend=plot_data['label1'])
if datatype == 'luftfeuchtigkeit' or datatype == 'temperatur':
source = ColumnDataSource(data=dict( date=df['date'], wertone=wertone, werttwo=werttwo))
plot2 = plot.line('date', 'werttwo', line_width=2, source=source, legend=plot_data['label2'], color="firebrick")
hover = HoverTool(
tooltips=[('Uhrzeit:', '@date{%d.%m.%Y %H:%M}'), (plot_data['label1'], '@wertone{0.00}') ],
formatters={'date' : 'datetime',},
mode='vline'
)
if datatype == 'luftfeuchtigkeit' or datatype == 'temperatur':
hover.renderers=[plot2]
hover.tooltips=[('Uhrzeit:', '@date{%d.%m.%Y %H:%M}'), (plot_data['label1'], '@wertone{0.00}'), (plot_data['label2'], '@werttwo{0.00}') ]
else:
hover.renderers=[plot1]
plot.add_tools(hover)
plot.xaxis.formatter=DatetimeTickFormatter( hours=["%H:%M"], days=["%d.%m.%Y %H:%M"], months=["%d.%m.%Y %H:%M"], years=["%d.%m.%Y %H:%M"])
plot.xaxis.major_label_orientation = pi/5
plot.yaxis.axis_label = plot_data['ylabel']
plot.legend.location ="top_left"
plot.legend.click_policy="hide"
script, div = components(plot)
return script, div
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 21:14
von Sirius3
Hypec hat geschrieben: Samstag 22. Juni 2019, 20:02
Ja ich weiß was `plot_data['werttypone'] == row[2] in row` bedeutet. Was meinst du ist daran falsch soll ich dem row einen anderen Namen geben oder was ist das Problem.
Dann hast Du es nicht verstanden. Erklär doch mal was Python da in welcher Reihenfolge prüft.
Du mußt alles, was Du über die Form an Parametern bekommst auch wieder in dashboard.html als Defaultwerte in die Form-Elemente eintragen.
POST ist die falsche Methode.
In `request.form` sollten mess_id, last und start_date/end_date gesetzt sein. Das mit einer if-elif-Kaskade abzufragen ist also unsinnig.
Das mit den plot-Listen mit jeweils einem Element ist immer noch quatsch.
Ich habe keinen Pfad gefunden, in dem start_src_ask nicht auf 1 gesetzt wird.
Was soll eigentlich mit der id passieren, die Du als Argument bekommst?
Code: Alles auswählen
@app.route('/dashboard/<id>', methods=['GET', 'POST'])
def dashboard(id):
mess_id = request.form.get('mess_id', 1)
last = request.form.get('last,', request.form.get('last_selected', 'monat'))
start_date = end_date = None
if last == 'tag':
ask_length = 96
elif last == 'woche':
ask_length = 672
elif last == 'monat':
ask_length = 2880
elif last == 'date':
ask_length = 96
start_date = request.form.get('start_date', "2018-01-01_00:00")
end_date = request.form.get('end_date', "2019-01-01_00:00")
plots = [
make_plot(mess_id, quantity, ask_length, start_date, end_date)
for quantity in PLOTS
]
return render_template('dashboard.html', form=request.form, plots=plots, mess_ids=['1', '2', '3'])
und sowas wie dashboard.html:
Code: Alles auswählen
<form method="get" >
<div class="topnav">
<input type="hidden" name="last_selected" value="{{form.last}}">
<button class="button" type="submit" value="tag" id="tag" name="last">Letzter Tag</button>
<button class="button" type="submit" value="woche" id="woche" name="last">Letzte Woche</button>
<button class="button" type="submit" value="monat" id="monat" name="last">Letzter Monat</button>
<div class="topnav-right">
<select name="mess_id" onchange='this.form.submit()'>
{%for mess_id in mess_ids%}
<option value="{{mess_id}}" {%if mess_id == form.mess_id%}selected{%endif%}>Station {{mess_id}}</option>
{%endfor%}
</select>
</div>
</div>
</form>
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 22:07
von Hypec
Die Liste wird durch laufen und in jeder row wird geprüft ob das die 2 Spalte den selben Inhalt hat wie der Punkt 'werttypone' in dem dict PLOTS hat.
Oke das mit dem start_src_ask ist echt überflüssig.
Das was du mir hier geschickt hat klappt irgendwie nicht wenn ich einen der Buttons nütze verschwinden alle 4 graphen. Genauso das speichern der mess_id klappt auch nicht. Sie wird immernoch immer auf Station 1 zurück gesetzt.
Die id soll später checken welche Messstationen dem eingelogten User gehören und ihm nur diese dann zur Verfügung stellen.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 22:26
von Sirius3
Das ist ja auch nur eine Skizze. Was hast Du denn nun konkret an Code ausprobiert?
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 22:35
von __blackjack__
@Hypec: Nope, das passiert da nicht bei ``plot_data['werttypone'] == row[2] in row``. Der Vergleich mit ``==`` passiert nicht für jedes Element in `row` sondern nur einmal. Als erstes wird aber das ``row[2] in row`` ausgewertet was *immer* `True` ist, denn natürlich ist das dritte Element aus `row` in `row` enthalten. Also ist das das gleiche wie ``plot_data['werttypone'] == True``. Da man nicht mit literalen Wahrheitswerten vergleicht, weil dabei sowieso nur wieder ein Wahrheitswert heraus kommt, ist das äquivalent zu einfach nur ``plot_data['werttypone']`` als Bedingung.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 22:48
von Hypec
Naja aber es Funktioniert ja ohne diese abfrage auch nicht. Und die for schleife wird ja für jede row in der Liste neu durchlaufen und so oft wird dann doch auch die if ausgeführt oder liege ich hier falsch?
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 23:01
von Hypec
Also bei last kommt immer None als Wert raus also das klappt irgendwie nicht mit der get method.
Die Eingabe Methode Date gehört eigentlich auch gar nicht zu den last Abfragen sondern soll separat davon eigene graphen generieren.
Und wie schon gesagt die select versteh ich in der Version jetzt auch nicht mehr so ganz und kann nur sagen das sie nicht mehr wie die alte erreicht.
Re: Flask 2 request POST nützen
Verfasst: Samstag 22. Juni 2019, 23:25
von __blackjack__
@Hypec: Ja, das ``if`` wird für jede `row` ausgeführt, aber die Bedingung ist halt total unsinnig formuliert und da Du nicht verstanden hast was die macht ist das halt nur Zufall das es so funktioniert wie Du das wolltest. Es wäre schon sinnvoll das Du verstehst was dieser Ausdruck tatsächlich macht und dann den unsinnigen Teil entfernst.
Re: Flask 2 request POST nützen
Verfasst: Sonntag 23. Juni 2019, 13:33
von Hypec
Eine row sieht ja so aus :
ID, mess_id, werttyp_id, timestamp, Wert
34, 1, 4, 2019-06-22.14:15(genaue Formatierenung weiß ich gerade nicht), 24,6
plot_data['werttypone'] = 4
Also die Abfrage sieht dann so aus:
If 4 = 4 in row:
Also kann sein das ich echt auf dem Schlauch stehe aber ich sehe nicht was falsch ist.
Re: Flask 2 request POST nützen
Verfasst: Sonntag 23. Juni 2019, 13:37
von Sirius3
Du mußt doch in eigenen Worten beschreiben können, was „4 == 4 in row” bedeutet.
Re: Flask 2 request POST nützen
Verfasst: Sonntag 23. Juni 2019, 14:20
von __blackjack__
@Hypec: Mir fällt gerade auf, dass meine Beschreibung falsch war. Sinnvoller wird die Bedingung dadurch aber nicht und richtiger auch nicht. Das ist ja eine verkettete Bedingung, also ``4 == row[2] in row`` ist das gleiche wie ``4 == row[2] and row[2] in row``. Der Teil nach dem ``and`` ist IMMER wahr, denn natürlich ist das 3. Element aus `row` in `row` enthalten. Bleibt ``4 == row[2]`` als sinnvoller Teil der Bedingung übrig.
Re: Flask 2 request POST nützen
Verfasst: Sonntag 23. Juni 2019, 16:59
von Hypec
Oke stimmt so ist es verständlich habe es jetzt richtig gemacht.
Hab leider aber noch keine dynamische Lösung für die anderen Probleme gefunden.