1 个不稳定版本

0.1.0 2024 年 6 月 11 日

#1033数据库接口

Download history 167/week @ 2024-06-11 13/week @ 2024-06-18 8/week @ 2024-06-25

188 每月下载
4 个 Crates 中使用 (通过 obeli-sk-db-sqlite)

MIT 许可证

37KB
670

async-sqlite

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

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