#mysql #sql #pool #database #r2d2

r2d2_mysql

MySQL support for the r2d2 connection pool

18 releases (stable)

23.0.0 Dec 12, 2022
22.0.0 Oct 25, 2022
21.0.0 Sep 16, 2021
20.0.0 Sep 1, 2021
0.2.0 Jul 25, 2015

#120 in Database interfaces

Download history 602/week @ 2023-02-09 591/week @ 2023-02-16 531/week @ 2023-02-23 577/week @ 2023-03-02 682/week @ 2023-03-09 840/week @ 2023-03-16 984/week @ 2023-03-23 728/week @ 2023-03-30 730/week @ 2023-04-06 693/week @ 2023-04-13 445/week @ 2023-04-20 595/week @ 2023-04-27 532/week @ 2023-05-04 541/week @ 2023-05-11 469/week @ 2023-05-18 608/week @ 2023-05-25

2,246 downloads per month
Used in 11 crates (8 directly)

MIT license

7KB
68 lines

r2d2-mysql

mysql support library for the r2d2 connection pool.

crates.io Documentation Version License Download

Install

Include r2d2_mysql in the [dependencies] section of your Cargo.toml:

[dependencies]
r2d2_mysql = "23"

Usage

use std::{env, sync::Arc, thread};
use mysql::{prelude::*, Opts, OptsBuilder};
use r2d2_mysql::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();
    }
}

Dependencies

~12–22MB
~459K SLoC