5个版本
0.2.0 | 2024年5月23日 |
---|---|
0.1.0 | 2023年11月17日 |
0.1.0-rc.4 | 2023年11月2日 |
0.1.0-rc.3 | 2023年3月24日 |
0.1.0-rc.2 | 2022年5月9日 |
#1265 在 数据库接口 中排名
12,347 每月下载量
被 12 个Crates (10个直接使用) 使用
1MB
14K SLoC
db_pools
为Rocket提供异步数据库驱动集成。有关完整用法,请参阅Crates文档。
用法
-
将
rocket_db_pools
作为依赖项添加,并启用一个或多个 数据库驱动功能[dependencies.rocket_db_pools] version = "0.2.0" features = ["sqlx_sqlite"]
-
为您的数据库选择一个名称,这里为
sqlite_logs
。 配置 至少一个数据库的URL[default.databases.sqlite_logs] url = "/path/to/database.sqlite"
-
为单元类型(此处为
Logs
)派生Database
,该类型包装所选驱动程序的Pool
类型,并带有#[database)]
装饰。将Type::init()
添加到您的应用的Rocket
中以初始化数据库连接池use rocket_db_pools::{Database, Connection}; #[derive(Database)] #[database("sqlite_logs")] struct Logs(sqlx::SqlitePool); #[launch] fn rocket() -> _ { rocket::build().attach(Logs::init()) }
-
使用
Connection<Type>
作为请求守卫来检索一个活跃的数据库连接#[get("/<id>")] async fn read(mut db: Connection<Logs>, id: i64) -> Result<Log> { sqlx::query!("SELECT content FROM logs WHERE id = ?", id) .fetch_one(&mut *db) .map_ok(|r| Log(r.content)) .await }
依赖项
~14–54MB
~1M SLoC