python利用flux基本读写influxDB

1、读取

  1. QuerApi 形式
    python 利用 flux 语句查询 influxdb 数据。
    https://influxdb-client.readthedocs.io/en/latest/api.html#queryapi

  2. 代码
    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())

  3. 说明
    ● 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 网页自动生成,方法如下:



  4. 数据返回

  5. 扩展
    to JSON

    Serialize 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")’用于返回数据表的规范化。而且最好只读取一项字段的数据,不然会出现告警。

  6. 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 查询语句。

posted @ 2023-01-09 15:59  薄书  阅读(830)  评论(0编辑  收藏  举报