Es wurde bereits geschrieben, dass es da genau 1 Tabelle ("Messwerte") braucht mehr nicht. Diese eine Tabelle hat ein paar Spalten, z.B. "Datum", "Temp", "Light" und "Water" und ganz wichtig: Jede Spalte hat den korrekten Datentyp, also [datetime] für "Datum" und z.B. [integer] für die anderen Spalten -> damit wird meistens massiv Speicherplatz eingespaart!
Ein bisschen Pseudocode:
Code: Alles auswählen
CREATE TABLE MESSWERTE("Datum" datetime, "Temp" int, "Light" int, "Water" int)
CREATE UNIQUE INDEX IX_Datum FOR "Datum" ON MESSWERTE
Alles andere kann dann die "Applikation" erledigen und zwar "straight forward" mit einer Datenbank und 1 Tabelle und den klar definierten Spalten in der Tabelle. Dafür gibt es in diesem Beispiel eigentlich genau 2 Befehle, nähmlich INSERT und SELECT.
INSERT schreibt die Daten in die Tabelle, immer schön alle 4 Werte "Datum", "Temp", "Light" und "Water". Fertig, da gibts nichts was kompliziert ist mit einer Datenbank (ausser man macht es sich so konsequent kompliziert wie in diesem Thread).
Code: Alles auswählen
INSERT MESSWERTE( "Datum", "Temp", "Light", "Water")
VALUES("Datum", "Temp", "Light", "Water")
SELECT braucht man, um die Daten für den erwähnten Plot wieder auszulesen. Python ist mächtig genug jeweils vom aktuellen Tagesdatum aus 7 Tage zurückzurechnen um so die Messewerte der vergangenen 7 Tage aus der Datenbank zu bekommen:
Code: Alles auswählen
SELECT "Datum", "Temp", "Light", "Water" FROM MESSWERTE WHERE "Datum" >= (Tagesdatum - 7 Tage)
Code: Alles auswählen
DELETE MESSWERTE WHERE "Datum" <= (Tagesdatum - 365Tage)
Es ist also offensichtlich, dass für das Vorhaben im Zusammenhang mit einer Datenbank keine besondere Magie notwendig ist, sondern einfach ein paar komplett unspektakuläre SQL-Befehle, nachdem die Datenbank und die Tabelle einmal(!) angelegt worden sind.
Es ist mir rätselhaft mit welchen Vorurteilen gewisse Programmierer einer Datenbank begegnen und eigentlich würde sich ja dafür auch SQLite3 eignen, ausser der "RASPI" hängt im LAN und man möchte die Messwerte vom PC aus übers Netzwerk aus der MySQL-Datenbank auslesen...
Viel Spass mit dem Vorhaben und wenn mit den gezeigten SQL-Befehlen noch etwas nicht verständlich ist, gebe ich gerne Auskunft.
Ice
PS: Ein anderes Datenmodell müsste zuerst ausführlichst begründet werden