Influx DB Query in Python

Hi,

wer kann mir bitte bei einer ganz einfachen Abfrage weiterhelfen, ich schaffs einfach nicht :slight_smile:
Ich möchte den letzten Wert von temp_sensor1 mit dem Tag “volk=1” haben.

Ich verwende den InfluxDBClient in Python mit folgender Abfrage:

temp = client.query('SELECT LAST(value) from "temp_sensor1" where "volk"="1"')

aber es kommt nichts zurück, Result={}

Habt ihr eine Idee wie ich das machen kann?

Hi Martin,

ist der Datentyp des Tag-Felds “volk” vielleicht Integer?

Kannst Du unabhängig davon auch noch das komplette Python Programm mit uns teilen? Vielleicht lässt sich ja noch etwas anderes erkennen, warum das gerade in die Hose geht.

Viele Grüße,
Andreas.

Hallo Andreas,
der Datentyp von Volk sollte eigentlich (auch wenns anders zu erwarten wäre) ein String sein. Ich habs die Abfrage auch mit Integer probiert, funktioniert leider auch nicht.

Das ganze Python-Script ist relativ einfach, weil ich wollte nur versuchen ob das so klappt :slight_smile:

# python3 -m pip install influxdb
from influxdb import InfluxDBClient

client_Influx = InfluxDBClient(host='123.123.123.123', port=8086, username='waage', password='password, database='db')
temp = client_Influx.query('SELECT LAST(value) from "temp_sensor1" where "volk"="1"')

Das hier ist nur ein Typo vom Abschreiben, stimmts?

Ich glaube Strings müssen über einfache Anführungszeichen (single-quotes) angesprochen werden, während Symbolnamen (Tabellenname sowie Feldnamen) optional mit doppelten Anführungszeichen gequotet werden können.

Beide dieser Anfragen sollten also funktionieren:

SELECT LAST(value) from temp_sensor1 where volk='1'
SELECT LAST("value") from "temp_sensor1" where "volk"='1'

Im Trockendock (ohne Python, sondern dafür direkt im Terminal) könnte es folgendermaßen funktionieren:

influx -precision rfc3339 -host 123.123.123.123 -username waage -password password -database db -execute "SELECT LAST(value) from temp_sensor1 where volk='1';"

Hallo Andreas,
vielen Dank! Ich werde das die nächsten Tage ausprobieren und dir Bescheid geben obs geklappt hat :slight_smile:

Schöne Grüße

1 Like

Hallo Andreas,

ich hab das jetzt ausprobiert, leider ohne Erfolg.
Direkt im Terminal klappt
SELECT * from temp_sensor1
Und jetzt kommts, ich trau es mir fast nicht sagen, aber ihr wisst ja e nicht wo ich wohne :slight_smile:

Der Datenbank-Eintrag heißt nicht “value” sonder “wert” :man_facepalming:

Also
SELECT LAST(wert) from temp_sensor1 where volk='1'
funktioniert wunderbar.

Sorry, das nächste Bier geht auf mich :beers:

2 Likes

AliExpress will auch immer mit mir deutsch reden und ich verstehs dann (so schlecht auto-übersetzt) nicht und möchts auch nicht! ;-)