Hallo
Ich habe folgendes Problem:
Mit der Anweisung
statement = "Select Zeitstempel, T_VL_SM, T_RL_SM from Solar order by Zeitstempel desc limit 1"
cursor.execute(statement)
for (Zeitstempel, T_VL_SM, T_RL_SM) in cursor:
print(Zeitstempel, T_VL_SM, T_RL_SM)
möchte ich alle 20 Sekunden den letzten Eintrag aus der Tabelle "Solar" auslesen. Diese Tabelle wird, von anderer Stelle aus, alle 20 Sekunden neu beschrieben und ich möchte halt immer den letzten Wert auslesen
Beim Starten des Programms bekomme ich dann auch den letzten Eintrag angezeigt.
Wenn aber 20 (40...) Sekunden später wieder die SELECT - Anweisung ausgeführt wird, bekomme ich immer wieder den gleichen Eintrag wie beim ersten mal ausgegeben.
Das Ganze funktioniert nur, wenn vor der SELECT - Anweisung die Verbindung zur Datenbank neu aufgebaut wird, und nach der Ausgabe der Daten diese wieder geschlossen wird ...connection.close().
Ich will aber nicht ständig die Verbindung auf- und abbauen, sondern die Verbindung immer offen lassen.
Welche Möglichkeiten gibt es?
Letzten Eintrag aus mariadb - Tabelle auslesen
Das Problem hatten wir letztens schone einmal, wenn ich mich nicht täusche.
Ich würde erst einmal versuchen die Transaktion zurückzusetzen. Wenn die alte Transaktion aktivi ist, sieht man darin natürlich keine neuen Daten.
Ich würde erst einmal versuchen die Transaktion zurückzusetzen. Wenn die alte Transaktion aktivi ist, sieht man darin natürlich keine neuen Daten.
Ohne den genauen Programmcode kann man hier schlecht was sagen, warum der Cursor nicht aktualisiert wird.
In SQL gibt es auch die Funktionen MAX() und MIN(). Wie sich vermuten lässt, ist das Ergebnis dann der Datensatz mit dem höchsten bzw. niedrigsten Wert der angegebenen Spalte.
In SQL gibt es auch die Funktionen MAX() und MIN(). Wie sich vermuten lässt, ist das Ergebnis dann der Datensatz mit dem höchsten bzw. niedrigsten Wert der angegebenen Spalte.
Mit commit oder rollback Methode der Verbindung. https://peps.python.org/pep-0249/#connection-methods
Alternativ kann man ggf das transaction Isolation Level so anpassen, dass man die neuen Daten immer sieht.
Und zu guter letzt klingt da so, als ob du eine Datenbank als Messaging-Bus benutzt. Dafür ist die nicht gedacht. Sowas wie MQTT würde diese Daten direkt verteilen, ohne solche Krücken.