1

如何遍历从 influxDB 返回的结果集?我通过使用得到这个结果

client = InfluxDBClient(host=influx_host, port=influx_port,database='db')
q = client.query("select * from cpu limit 1")

结果集({'(u'cpu',无)':[{u'usage_guest_nice':0,u'usage_user':0.90783871790308868,u'usage_nice':0,u'usage_steal':0,u'usage_iowait':0.056348610076366427 , u'host': u'xxx.xxx.hostname.com', u'usage_guest': 0, u'usage_idle': 98.184322579062794, u'usage_softirq': 0.0062609566755314457, u'time': u'2016-06-26T16 :25:00Z', u'usage_irq': 0, u'cpu': u'cpu-total', u'usage_system': 0.84522915123660536}]})

我想获取usage_user 值、usage_system 值等并将它们插入到数组中。

4

4 回答 4

2

迭代的正确方法ResultSet是使用它的get_points()方法,它可以选择按测量或标签或两者过滤。

例如:

results = client.query("select * from cpu limit 1")
for measurement in results.get_points(measurement='cpu'):
    usage_system = measurement['usage_system']
    # do whatever with usage_system

请参阅官方InfluxDB-Python文档。

于 2018-02-15T22:30:20.733 回答
0

我同意 Peterdn,因为客户端本身有更简单的方法,就像这样

results = client.query("select * from cpu limit 100")
resultInList = results.get_points(measurement='cpu')
print(type(resultInList)
--->>> <class 'list'>  

最后一个打印语句显示您有响应数据列表.....这意味着它正在将您的结果集转换为列表,您可以在不使用 Pandas 的情况下轻松迭代...

于 2018-09-08T07:58:12.107 回答
0

我设法使用raw选项以 JSON 格式导出结果,然后以逗号分隔它们,将它们添加到数组中,然后遍历它们。我不得不为此使用数据框

from influxdb import InfluxDBClient
import pandas as pd
client = InfluxDBClient(host=influx_host, port=influx_port,database='db')
q = "select * from cpu limit 1"
result = pd.DataFrame(client.query(q, chunked=False).raw)

我希望这对其他人有帮助,因为文档不是很清楚如何使用它。

于 2018-02-02T07:34:56.483 回答
-1

正如文档中和@peterdn所指出的,InfluxDBClient.query()函数返回一个ResultSet对象。

Using将为ResultSet 中的所有点rs.get_points()返回一个生成器。

例子:

rs = cli.query("SELECT * from cpu")
cpu_points = list(rs.get_points(measurement='cpu'))

您甚至可以按测量、标签或两者进行过滤,如下所示:

按测量过滤:

rs = cli.query("SELECT * from cpu")
cpu_points = list(rs.get_points(measurement='cpu'))

按标签过滤:

rs = cli.query("SELECT * from cpu")
cpu_influxdb_com_points = list(rs.get_points(tags={"host_name": "influxdb.com"}))

按标签和测量过滤:

rs = cli.query("SELECT * from cpu")
points = list(rs.get_points(measurement='cpu', tags={'host_name': 'influxdb.com'}))

希望这可以帮助。

于 2018-10-21T09:17:04.387 回答