1 个不稳定版本
0.1.0 | 2024 年 6 月 11 日 |
---|
#1033 在 数据库接口
188 每月下载
在 4 个 Crates 中使用 (通过 obeli-sk-db-sqlite)
37KB
670 行
async-sqlite
一个用于在异步上下文中与 sqlite 交互的库。
此库已在 tokio 和 async_std 上进行测试,但它应该与所有异步运行时兼容。
安装
将 async-sqlite
添加到 Cargo.toml 文件中的 "dependencies" 部分。
这可以通过运行以下命令完成
cargo add async-sqlite
用法
Client
代表一个单独的后台 sqlite3 连接,可以从程序中的任何线程并发调用。
创建 sqlite 客户端并运行查询
use obeli_sk_deps_async_sqlite::{ClientBuilder, JournalMode};
let client = ClientBuilder::new()
.path("/path/to/db.sqlite3")
.journal_mode(JournalMode::Wal)
.open()
.await?;
let value: String = client.conn(|conn| {
conn.query_row("SELECT val FROM testing WHERE id=?", [1], |row| row.get(0))
}).await?;
println!("Value is: {value}");
Pool
代表一个可以从程序中的任何线程并发调用的后台 sqlite3 连接集合。
创建 sqlite 池并运行查询
use obeli_sk_deps_async_sqlite::{JournalMode, PoolBuilder};
let pool = PoolBuilder::new()
.path("/path/to/db.sqlite3")
.journal_mode(JournalMode::Wal)
.open()
.await?;
let value: String = pool.conn(|conn| {
conn.query_row("SELECT val FROM testing WHERE id=?", [1], |row| row.get(0))
}).await?;
println!("Value is: {value}");
Cargo 功能
此库尝试导出底层 rusqlite 库中几乎所有的功能。
一个显著的区别是,bundled
功能默认启用,但可以在 Cargo.toml 中的以下行中禁用
async-sqlite = { version = "*", default-features = false }
依赖项
~30MB
~477K SLoC