1 个不稳定版本
0.1.2 | 2023 年 4 月 2 日 |
---|---|
0.1.1 |
|
0.1.0 |
|
#33 在 #clickhouse
32 每月下载量
200KB
6K SLoC
CLICKHOUSE-READONLY
异步 TCP 连接到 Clickhouse 数据库,具有只读权限(例如,您只能执行查询,但不能对 Cmd::DATA
调用 PacketStream
)。
- 不支持
Date
或其他日期类型。 - 由
ethnum::I256
提供的Int256
只能解析为ethereum_types::U256
。 FixedString(42)
可以解析为ethereum_types::Address
支持类型
pub enum SqlType {
UInt8,
UInt16,
UInt32,
UInt64,
Int8,
Int16,
Int32,
Int64,
Int256,
String,
FixedString,
Float32,
Float64,
Nullable,
Array,
}
<!> 库计划不更新,可以按现有状态使用。
示例
cargo run --package clickhouse-readonly --example query_stream
use clickhouse_readonly::{ClickhouseResult, Pool, PoolConfig};
use futures_util::StreamExt;
#[tokio::main]
async fn main() -> ClickhouseResult<()> {
std::env::set_var("RUST_LOG", "clickhouse_readonly=trace");
env_logger::init();
let config = PoolConfig::new(
"127.0.0.1".parse().unwrap(),
"default".to_string(),
"username".to_string(),
"password".to_string(),
true,
).build();
let pool = Pool::new(config);
let mut handle = pool.get_handle().await?;
let mut stream = handle.query("SELECT * FROM default.some_table").stream();
while let Some(row) = stream.next().await {
let row = row?;
let asset: ethereum_types::Address = row.get("asset")?;
let ticker: String = row.get("asset_symbol")?;
let rate: ethereum_types::U256 = row.get("deposit")?;
eprintln!("Found {ticker}: {asset:?} / rate: {rate:?}");
}
Ok(())
}
依赖项
~10–21MB
~315K SLoC