如何从influxDB API的JSON响应中提取点?

问题描述

我正在使用python请求模块通过influx API在我的本地主机上查询influxdb。代码如下。

import requests

INFLUX_DATABASE_NAME = "mydb"

influx_write_url = f'http://localhost:8086/write?db={INFLUX_DATABASE_NAME}'
influx_query_url = f'http://localhost:8086/query?db={INFLUX_DATABASE_NAME}'

pid = "CTR2257"
time_range = "7d"

pid_mod = "\'"+ pid +"\'"

query_string = f'SELECT "temp1"::field,"temp2"::field,"hum1"::field,"hum2"::field,"co2"::field,"light"::field,"fan"::field FROM "stat" WHERE productID = {pid_mod} AND time > Now() - {time_range}'

payload = {'q': query_string}
r = requests.get(url=influx_query_url,params=payload)

# Printing the response content(JSON data)
print(r.content)

print语句产生以下输出输出包含所需的数据集,但格式不是首选。

b'{"results":[{"statement_id":0,"series":[{"name":"stat","columns":["time","temp1","temp2","hum1","hum2","co2","light","fan"],"values":[["2020-11-04T22:09:26.4960419Z",32,34,65,68,9,true,true],["2020-11-04T23:31:33.8177588Z",30,90,85,5,["2020-11-04T23:31:46.5988965Z",["2020-11-04T23:31:49.9271554Z",true]]}]}]}\n'

当我使用请求模块中的.json()方法解析此数据时

request_data = r.json()
print(request_data)

我得到下面的python字典。同样,格式是相同的,不是所希望的。

{'results': [{'statement_id': 0,'series': [{'name': 'stat','columns': ['time','temp1','temp2','hum1','hum2','co2','light','fan'],'values': [['2020-11-04T22:09:26.4960419Z',True,True],['2020-11-04T23:31:33.8177588Z',['2020-11-04T23:31:46.5988965Z',['2020-11-04T23:31:49.9271554Z',True]]}]}]}

我正在寻找的是获取长格式而不是宽格式的每个字段的点数据。例如。

temp1 = [point1,point2,point3,....pointn]
temp2 = [point1,....pointn]
hum1 = [point1,....pointn]
hum2 = [point1,....pointn]

and so own.

任何想法或帮助都将受到高度赞赏。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)