Midwess
Guides

Open a database

use pglite::PGlite;

# async fn run() -> Result<(), pglite::Error> {
let db = PGlite::open("./mydata").await?;
# Ok(())
# }

Use open_temp() for tests:

let db = pglite::PGlite::open_temp().await?;

Execute SQL

db.exec("CREATE TABLE users (id serial PRIMARY KEY, name text NOT NULL)").await?;
db.exec("INSERT INTO users (name) VALUES ('alice'), ('bob')").await?;

Query with parameters

let rows = db
    .query("SELECT id, name FROM users WHERE id > $1 ORDER BY id", &[&0i32])
    .await?;

for row in rows {
    let id: i32 = row.get(0)?;
    let name: &str = row.get(1)?;
    println!("{id}: {name}");
}

Use a transaction

let tx = db.transaction().await?;
tx.exec("INSERT INTO users (name) VALUES ('carol')").await?;
tx.commit().await?;

If a transaction is dropped without commit(), it rolls back.

Close

db.close().await?;