Skip to content

MySQL support for the r2d2 connection pool (Rust)

License

Notifications You must be signed in to change notification settings

SergioBenitez/r2d2-mysql

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

r2d2-mysql

rust-mysql-simple support library for the r2d2 connection pool. Documentation is available at http://outersky.github.io/r2d2-mysql/doc/v3.0.0/r2d2_mysql

Install

Just include another [dependencies] section into your Cargo.toml:

[dependencies]
r2d2_mysql="*"

Example

extern crate mysql;
extern crate r2d2_mysql;
extern crate r2d2;

use std::env;
use std::sync::Arc;
use std::thread;
use mysql::{Opts,OptsBuilder};
use mysql::prelude::Queryable;
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()
                    .map_err(|err| {
                        println!(
                            "get connection from pool error in line:{} ! error: {:?}",
                            line!(),
                            err
                        )
                    })
                    .unwrap();
                let _ = conn.query("SELECT version()").map(|_: Vec<String>| ()).map_err(|err| {
                    println!("execute query error in line:{} ! error: {:?}", line!(), err)
                });
            });
            tasks.push(th);
        }

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

About

MySQL support for the r2d2 connection pool (Rust)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 92.6%
  • Shell 7.4%