塩焼きブログ

塩焼きに関しての研究内容を公開しています

RustでPostgreSQLに接続する

前回はMySQLに接続したので今回はPostgreSQLに接続してみよう。Rustはコンパイルを通すのが結構キツいんで、こうしてコンパイルが通るコードを公開し続けることで特異点に到達できればと。

use r2d2;
use r2d2_postgres;
use postgres;

#[derive(Debug)]
struct Hoge {
    hoge: String
}

fn main() {

    let name = "name";
    let pass = "pass";
    let db_url = "postgres://user:pass@localhost:5432/name";
    let manager = r2d2_postgres::PostgresConnectionManager::new(db_url, r2d2_postgres::TlsMode::None).unwrap();
    let pool: Arc<r2d2::Pool<r2d2_postgres::PostgresConnectionManager>> = Arc::new(r2d2::Pool::new(manager).unwrap());
    let conn =  pool.get().unwrap();
    let sql = r"SELECT hoge FROM user WHERE name = $1 AND pass = $2";
    let stmt = conn.prepare_cached(sql).unwrap();
    let rows = stmt.query(&[&name, &pass]).unwrap();

    let length = &rows.len().clone();
    if *length == 0 {
        dbg!("dame-");
    } else {
        dbg!(Hoge{hoge: rows.get(0).get("hoge")});
    }
}

こんな感じで接続できました。結構仰々しいコードです。Poolはとりあえずr2d2ってのを使ってみました。まだ手探りなのでどんなプールを使うのがベストなのかは謎。個人的にusizeってのが目新しかった。JSとかだとintで返るじゃないですか。

参考