#influx-db #client #interact #time #bucket #range

influx-client

用于与 InfluxDB 交互的 Rust 库

6 个版本 (3 个重大更新)

0.4.1 2023年1月24日
0.4.0 2021年8月8日
0.3.1 2021年2月28日
0.2.0 2021年2月22日
0.1.0 2021年2月21日

#1892数据库接口

MIT 协议

20KB
454

influx_client

crates-badge docs-badge

这是一个用于与 InfluxDB 数据库交互的 Rust 库。它还处于早期开发阶段,因此请预期会有错误和缺失的功能。

已实现的功能

  • 向 bucket 中写入数据
  • 在特定时间范围内查询数据(目前仅支持相对时间)
  • 在查询中使用过滤器

示例

向 bucket 中写入

use std::{collections::HashMap, time::SystemTime};

use influx_client::{
    Client, InfluxError, Precision, WriteQuery,
};

fn main() -> Result<(), InfluxError> {
    let client = Client::from_env("http://localhost:8086").expect("INFLUXDB_TOKEN not set");
    let mut tags = HashMap::new();
    tags.insert("t1", "v1");
    tags.insert("t2", "v2");
    let data = WriteQuery {
        name: "test",
        tags,
        field_name: "i",
        value: 42,
        timestamp: Some((SystemTime::now(), Precision::ns)),
    };

    client.insert("home", "home", Precision::ms, data)?;
}

从 bucket 中读取

use influx_client::{
    flux::functions::{NumericFilter, Range, StringFilter},
    Client, InfluxError, Precision, ReadQuery,
};

fn main() -> Result<(), InfluxError> {
    let client = Client::from_env("http://localhost:8086").expect("INFLUXDB_TOKEN not set");
    
    let q = ReadQuery::new("home")
        .range(Range::new(Some((-12, Precision::h)), None))
        .filter(StringFilter::Eq("_measurement", "test"))
        .filter(NumericFilter::Lt("_value", 99));

    println!("{}", client.get("home", q)?);
    Ok(())
}

依赖项

~4–19MB
~237K SLoC