如何遍历从涌入数据库返回的结果集?我使用
得到了这个结果client = InfluxDBClient(host=influx_host, port=influx_port,database='db')
q = client.query("select * from cpu limit 1")
ResultSet({'(u'cpu',None)':[{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值等,并将它们插入数组中。
答案 0 :(得分: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文档。
答案 1 :(得分:0)
我设法使用原始选项以JSON格式导出结果,然后用逗号分隔它们,将它们添加到数组中,然后迭代它们。我不得不使用这个
的数据帧import UIKit
import RxCocoa
import RxRealm
import RxSwift
import RealmSwift
class CustomCell: UITableViewCell {
let bag = DisposeBag()
var persons: Results<PersonInfo>!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var ageLabel: UILabel!
@IBOutlet weak var switch: UISwitch!
override func awakeFromNib() {
super.awakeFromNib()
let realm = try! Realm()
persons = realm.objects(PersonInfo.self)
// I thought I need to do something here
// something like this below
alarmSwitch.rx.value
.subscribe{
// get index of selected cell
// update data
}
.disposed(by: bag)
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
我希望这会对其他人有所帮助,因为文档不太清楚如何使用它。
答案 2 :(得分:0)
我同意Peterdn的观点,因为客户端本身有一种更简单的方法
results = client.query("select * from cpu limit 100")
resultInList = results.get_points(measurement='cpu')
print(type(resultInList)
--->>> <class 'list'>
最后一条打印语句显示您具有响应数据列表.....,这意味着它正在转换结果集到列表中,而您无需使用熊猫就可以轻松地进行迭代...
答案 3 :(得分:0)
docs和@peterdn指出,InfluxDBClient.query()
函数返回一个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'}))
希望这会有所帮助。