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数据库接口

Download history 260/week @ 2024-05-04 273/week @ 2024-05-11 372/week @ 2024-05-18 259/week @ 2024-05-25 254/week @ 2024-06-01 274/week @ 2024-06-08 223/week @ 2024-06-15 166/week @ 2024-06-22 390/week @ 2024-06-29 282/week @ 2024-07-06 272/week @ 2024-07-13 646/week @ 2024-07-20 511/week @ 2024-07-27 306/week @ 2024-08-03 364/week @ 2024-08-10 410/week @ 2024-08-17

每月 1,657 次下载
utiles 中使用

MIT 许可证

27KB
405

async-sqlite

一个用于在异步上下文中与 sqlite 交互的库。

此库在 tokioasync_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