-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinfluxdb2client.py
More file actions
54 lines (43 loc) · 1.49 KB
/
influxdb2client.py
File metadata and controls
54 lines (43 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import time
import httpx
import pandas as pd
# import modin.pandas as pd
class InfluxQLClient:
def __init__(self, host, bucket, token):
self.host = host
self.bucket = bucket
self.token = token
def query(self, query):
custom_header = {
"Authorization": f"Token {self.token}"
}
params = {
"db": self.bucket
}
self.r = httpx.post("".join([self.host,"/query"]) ,
headers=custom_header,
params=params,
data={"q":query})
self.r.raise_for_status()
return self
def as_json(self):
if self.r:
return self.r.json()
raise ValueError("No data from influxdb available")
def as_dataframe(self):
if self.r:
json_data = self.r.json()
print(json_data)
results = json_data.get('results', {"series":[]})
series = results[0].get('series',[])
data = []
serie_list = []
if len(series) == 1:
serie_list = series[0]
values = serie_list['values']
data = [value for value in values]
elif len(series) > 0:
serie_list = series[0]
data = [serie['values'][0] for serie in series]
if len(data) > 0:
return pd.DataFrame(columns=serie_list['columns'], data=data)