python利用flux基本读写influxDB
1、读取
-
QuerApi 形式
python 利用 flux 语句查询 influxdb 数据。
https://influxdb-client.readthedocs.io/en/latest/api.html#queryapi
-
代码
from influxdb_client import InfluxDBClient
client = InfluxDBClient(url="http://...:8086",
token='',
org="*")
query_api = client.query_api()
data_frame = query_api.query('from(bucket: "test")'
'|> range(start: 2000-01-01T00:00:00Z, stop: 2000-01-02T00:00:00Z)'
'|> filter(fn: (r) => r["_measurement"] == "test")'
'|> filter(fn: (r) => r["_field"] == "heat" or r["_field"] == "cool")'
'|> aggregateWindow(every: 10m, fn: mean, createEmpty: false)'
'|> yield(name: "mean")')
print(data_frame.to_string()) -
说明
● url:为数据库的地址与端口
● token:为连接的密匙,(类似形式:K4***************************************Sng==)
在 Load Data 栏中选择 API Tokens 进入创建密匙
● org:为数据库的组织名
● query()括号内的为 influxDB 支持的 flux 数据查询语法
InfluxDB 2.0 的数据查询语法 - InfluxDB - 大象笔记 (sunzhongwei.com)
(76条消息) 【InfluxDB V2.0】介绍与使用,flux查询、数据可视化_xbl丶的博客-CSDN博客_influxdb 可视化
也可由 influxdb 网页自动生成,方法如下:
-
数据返回
-
扩展
to JSONSerialize to JSON
output = tables.to_json(indent=5)
print(output)
to CSV
query()函数改成 query_csv()Query: using CSV iterator
csv_iterator = client.query_api().query_csv('from(bucket:"my-bucket") |> range(start: -10m)')
Serialize to values
output = csv_iterator.to_values()
print(output)
to pandas dataframe
query()函数改成 query_data_frame(),同时 flux 语句增加一行‘|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")’用于返回数据表的规范化。而且最好只读取一项字段的数据,不然会出现告警。 -
Post 的读取形式
InfluxDB v2.6 API documentation (influxdata.com)
在 postman 中测试
● Post 的地址: 192.168.*.:8086/api/v2/query?org=组织
● headers 填写:
--header 'Content-Type: application/vnd.flux'
--header 'Accept: application/csv
--header 'Authorization: Token INFLUX_API_TOKEN'
其中INFLUX_API_TOKEN'替换为获取的 token 密匙
● 在 body 中选择 ray 然后填写 flux 查询语句。