Wie kann man Zahlen mit Nachkommastellen in die Datehbank reibschreiben?

temperatur.py - (Computer, Technik, Technologie)

2 Antworten

Wenn du Dein Prinzip beibehalten willst, musst Du statt "%.1f" "%f" schreiben. Ich rate allerdings, das Datum und die Temperatur in verschiedene Spalten der Datenbank zu schreiben. Datum = type String, Temperature = type float. Dazu muss man die Struktur der Datenbank entsprechend definieren. Die genaue Vorgehensweise zu beschreiben, führt hier zu weit.


timonline1 
Fragesteller
 19.10.2017, 09:30

Sonnst vlt noch eine idee?

sieht jz so aus: der zeigt z.B. statt 24.1 jz 24.100000 an... in der DB keider keine veränderung...

so sieht's dann bei mir aus:

https://prnt.sc/gz90oi

0
surbahar53  19.10.2017, 09:48
@timonline1

Ich habe mal auf die Schnelle eine DB mit dem type 'float' erstellt. Kann dort beliebig lange Dezimalzahlen reinschreiben und rauslesen.

mögliche Fehlerursache :

- falscher Type in der DB (z.B. Integer)

- bei der Ausgabe der DB-Inhalte (linkes Fenster) werden Floats als Integer dargestellt.

0

Von welchem Typ ist die Spalte in der Tabelle? Sollte "decimal" oder "float" sein, je nach Anwendungsfall.


timonline1 
Fragesteller
 19.10.2017, 08:53

Ich glaube das war decimal, wo kann ich das nachgucken bzw. ändern? Und was muss ich stattdessen verwenden?

0
dumbo77  19.10.2017, 09:50
@timonline1

Nach Deinem Screenshot aus der Antwort weiter oben hat die Spalte wohl momentan den Typ integer.

Du kannst das ändern mit einem SQL-Befehl wie z.B.

ALTER TABLE test CHANGE daten daten DECIMAL(5,2) NOT NULL;

Dabei wäre dann natürlich bei "test" der Name Deiner Tabelle und bei "daten" der Name der Spalte zu benutzen.

DECIMAL(5,2) wäre jetzt nur ein Beispiel, hängt ganz davon ab, wie viele Vor- und Nachkommastellen Du brauchst. Bei Dir reicht vermutlich auch 4,2, wenn es nur um normale Umgebungstemperaturen geht bzw. 3,1 bei Umgebungstemperaturen und einer Nachkommastelle.

0
timonline1 
Fragesteller
 19.10.2017, 11:03
@dumbo77

In der Tabelle werden die Messwerte mit 2 Nachkommastellen angezeigt.

Jetzt ist das problem, das der die werte nichtmehr in der DB reinschreibt... Wenn ich den float durch einen double ersetzen erkennt der diesen nicht ;( 

temp_c = float(temp_string)/1000.0

wie kann ich das ändern??

So siehts jz aus:

https://prnt.sc/gza2fm

0
timonline1 
Fragesteller
 19.10.2017, 13:15
@timonline1

SCHON GUT! Alles klar... der table war falsch ^^

 in zeile 32-33 war der table fasch definiert, das sollte "(timestamp, daten)" heissen ...

Nochmals danke ;)

0