7 个不稳定版本 (3 个重大更改)
0.3.1 | 2024 年 7 月 23 日 |
---|---|
0.3.0 | 2024 年 7 月 3 日 |
0.2.2 | 2024 年 2 月 9 日 |
0.2.1 | 2023 年 12 月 29 日 |
0.0.1 | 2023 年 6 月 25 日 |
#377 在 数据库接口 中
每月 1,657 次下载
在 utiles 中使用
27KB
405 行
async-sqlite
一个用于在异步上下文中与 sqlite 交互的库。
此库在 tokio 和 async_std 上进行了测试,但它应与所有异步运行时兼容。
安装
将 async-sqlite
添加到 Cargo.toml 文件中的 "dependencies" 部分。
可以通过运行以下命令来完成此操作:
cargo add async-sqlite
用法
Client
代表一个单独的后台 sqlite3 连接,可以从程序中的任何线程并发调用。
要创建 sqlite 客户端并运行查询:
use 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 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 }
依赖项
~29MB
~472K SLoC