17 个版本

0.7.2 2024年2月14日
0.7.1 2023年9月8日
0.7.0 2023年7月3日
0.6.0 2023年3月4日
0.0.3 2019年7月14日

数据库接口 中排名 42

Download history 1738/week @ 2024-04-29 1616/week @ 2024-05-06 1872/week @ 2024-05-13 2068/week @ 2024-05-20 2285/week @ 2024-05-27 2388/week @ 2024-06-03 1937/week @ 2024-06-10 1913/week @ 2024-06-17 2174/week @ 2024-06-24 1600/week @ 2024-07-01 1855/week @ 2024-07-08 1726/week @ 2024-07-15 1721/week @ 2024-07-22 2298/week @ 2024-07-29 2038/week @ 2024-08-05 1478/week @ 2024-08-12

每月下载量 7,652
用于 27 Crates(20 个直接使用

MIT 许可证

82KB
1.5K SLoC


rust-influxdb

非官方的 InfluxDB Rust 驱动程序

Build Status Coverage Report Documentation Status Build with Rust Minimum Rust Version: 1.65

这个库仍在开发中。这意味着您可能需要的某些功能尚未实现,或者可能有更好的处理方式。

欢迎提交拉取请求。请参阅 贡献指南行为准则。有关过去更改的列表,请参阅 CHANGELOG.md

当前支持的功能

  • 读取和写入 InfluxDB
  • 可选的 Serde 反序列化支持
  • 在一个请求中运行多个查询(例如 SELECT * FROM weather_berlin; SELECT * FROM weather_london
  • 在一个请求中写入单个或多个测量值(例如 WriteQueryVec<WriteQuery> 参数)
  • 认证和非认证连接
  • 支持 async/await
  • 为写入/读取到结构体提供 #[derive(InfluxDbWriteable)] 派生宏
  • 支持 GROUP BY
  • Tokio 和 async-std 支持(见下面的示例)或 可用后端
  • 可更换的 HTTP 后端(见下文)

快速入门

将以下内容添加到您的 Cargo.toml

influxdb = { version = "0.7.2", features = ["derive"] }

有关使用 Serde 反序列化的示例,请参阅 serde_integration

use chrono::{DateTime, Utc};
use influxdb::{Client, Error, InfluxDbWriteable, ReadQuery, Timestamp};

#[tokio::main]
// or #[async_std::main] if you prefer
async fn main() -> Result<(), Error> {
    // Connect to db `test` on `https://127.0.0.1:8086`
    let client = Client::new("https://127.0.0.1:8086", "test");

    #[derive(InfluxDbWriteable)]
    struct WeatherReading {
        time: DateTime<Utc>,
        humidity: i32,
        #[influxdb(tag)]
        wind_direction: String,
    }

    // Let's write some data into a measurement called `weather`
    let weather_readings = vec![
        WeatherReading {
            time: Timestamp::Hours(1).into(),
            humidity: 30,
            wind_direction: String::from("north"),
        }
        .into_query("weather"),
        WeatherReading {
            time: Timestamp::Hours(2).into(),
            humidity: 40,
            wind_direction: String::from("west"),
        }
        .into_query("weather"),
    ];

    client.query(weather_readings).await?;

    // Let's see if the data we wrote is there
    let read_query = ReadQuery::new("SELECT * FROM weather");

    let read_result = client.query(read_query).await?;
    println!("{}", read_result);
    Ok(())
}

有关更多示例,请查看存储库中的 tests/integration_tests.rs 中的集成测试。

选择 HTTP 后端

要与InfluxDB通信,您可以选择配置适当的特性来使用HTTP后端。我们建议您坚持使用默认的基于reqwest的客户端,除非您真的需要async-std兼容性。

  • hyper(通过reqwest,默认使用),配合rustls

    influxdb = { version = "0.7.2", features = ["derive"] }
    
  • hyper(通过reqwest),使用本机TLS(OpenSSL)

    influxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "reqwest-client"] }
    
  • hyper(通过surf),如果您需要tokio 0.2兼容性请使用此选项

    influxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "hyper-client"] }
    
  • curl,使用libcurl

    influxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "curl-client"] }
    
  • async-h1,使用本机TLS(OpenSSL)

    influxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "h1-client"] }
    
  • async-h1,配合rustls

    influxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "h1-client-rustls"] }
    
  • WebAssembly的window.fetch,通过web-syswasm-bindgen

    influxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "wasm-client"] }
    

许可

License: MIT

@ 2020 Gero Gerke和贡献者

依赖

~5–24MB
~393K SLoC