Postro Postgres Driver
Asynchronous Postgres Driver and Utility.
Originally, this is an attempt to take out the Postgres part of sqlx
crate, but the underlying structure is very different, although the public interface api is pretty simmilar.
Installation
To install postro, run:
cargo add postro
or add this line to your Cargo.toml in [dependencies] section:
postro = "0.1.1"
Usage
The general usage is to use database pooling via the Pool API:
use postro::{FromRow, Pool, Result, execute, query};
#[derive(Debug, FromRow)]
struct Post {
id: i32,
name: String,
}
#[tokio::main]
async fn main() -> Result<()> {
let mut pool = Pool::connect_env().await?;
let mut handles = vec![];
execute("CREATE TABLE post(id serial, name text)", &mut pool).await?;
for i in 0..24 {
let mut pool = pool.clone();
handles.push(tokio::spawn(async move {
execute("INSERT INTO post(name) VALUES($1)", &mut pool)
.bind(&format!("thread{i}"))
.await
}));
}
for h in handles {
h.await.unwrap()?;
}
let posts = query::<_, _, Post>("SELECT * FROM post", &mut pool)
.fetch_all()
.await?;
assert!(posts.iter().any(|e| e.name.as_str() == "thread23"));
assert_eq!(posts.len(), 24);
Ok(())
}
see the documentation for more details
License
This project is licensed under the MIT License - see the LICENSE file for details.