16 个稳定版本 (15 个主要版本)

25.0.0 2024年7月8日
24.0.0 2023年7月18日
23.0.0 2022年12月12日
22.0.0 2022年10月25日
0.2.0 2015年7月25日

#231 in 数据库接口

Download history • Rust 包仓库 803/week @ 2024-04-24 • Rust 包仓库 931/week @ 2024-05-01 • Rust 包仓库 1325/week @ 2024-05-08 • Rust 包仓库 1086/week @ 2024-05-15 • Rust 包仓库 578/week @ 2024-05-22 • Rust 包仓库 624/week @ 2024-05-29 • Rust 包仓库 662/week @ 2024-06-05 • Rust 包仓库 843/week @ 2024-06-12 • Rust 包仓库 839/week @ 2024-06-19 • Rust 包仓库 1479/week @ 2024-06-26 • Rust 包仓库 674/week @ 2024-07-03 • Rust 包仓库 840/week @ 2024-07-10 • Rust 包仓库 508/week @ 2024-07-17 • Rust 包仓库 870/week @ 2024-07-24 • Rust 包仓库 1331/week @ 2024-07-31 • Rust 包仓库 929/week @ 2024-08-07 • Rust 包仓库

3,718 每月下载量
用于 17 个 Crates (14 个直接使用)

MIT 许可证

7KB
64

r2d2_mysql

mysqlr2d2 连接池的支持库。

crates.io Documentation Version License Download

安装

在您的 Cargo.toml[dependencies] 部分包含 r2d2_mysql

[dependencies]
r2d2_mysql = "24"

使用方法

use std::{env, sync::Arc, thread};

use r2d2_mysql::{
    mysql::{prelude::*, Opts, OptsBuilder},
    r2d2, MySqlConnectionManager,
};

fn main() {
    let url = env::var("DATABASE_URL").unwrap();
    let opts = Opts::from_url(&url).unwrap();
    let builder = OptsBuilder::from_opts(opts);
    let manager = MySqlConnectionManager::new(builder);
    let pool = Arc::new(r2d2::Pool::builder().max_size(4).build(manager).unwrap());

    let mut tasks = vec![];

    for _ in 0..3 {
        let pool = pool.clone();
        let th = thread::spawn(move || {
            let mut conn = pool.get().expect("error getting connection from pool");

            let _ = conn
                .query("SELECT version()")
                .map(|rows: Vec<String>| rows.is_empty())
                .expect("error executing query");
        });

        tasks.push(th);
    }

    for th in tasks {
        let _ = th.join();
    }
}

依赖

~13–27MB
~437K SLoC