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
每月下载量 7,652
用于 27 个 Crates(20 个直接使用)
82KB
1.5K SLoC
非官方的 InfluxDB Rust 驱动程序
这个库仍在开发中。这意味着您可能需要的某些功能尚未实现,或者可能有更好的处理方式。
欢迎提交拉取请求。请参阅 贡献指南 和 行为准则。有关过去更改的列表,请参阅 CHANGELOG.md。
当前支持的功能
- 读取和写入 InfluxDB
- 可选的 Serde 反序列化支持
- 在一个请求中运行多个查询(例如
SELECT * FROM weather_berlin; SELECT * FROM weather_london
) - 在一个请求中写入单个或多个测量值(例如
WriteQuery
或Vec<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"] }
-
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"] }
-
influxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "h1-client-rustls"] }
-
WebAssembly的
window.fetch
,通过web-sys
和wasm-bindgeninfluxdb = { version = "0.7.2", default-features = false,features = ["derive", "use-serde", "wasm-client"] }
许可
@ 2020 Gero Gerke和贡献者。
依赖
~5–24MB
~393K SLoC