pub struct Connection { /* private fields */ }Expand description
An open connection to a PostgreSQL database.
§Examples
Load a set of rows from a local PostgreSQL database, and iterate over them.
use spin_sdk::pg3::{Connection, Decode};
let db = Connection::open("host=localhost user=postgres password=my_password dbname=mydb")?;
let query_result = db.query(
"SELECT * FROM users WHERE age >= $1",
&[min_age.into()]
)?;
let name_index = query_result.columns.iter().position(|c| c.name == "name").unwrap();
for row in &query_result.rows {
let name = String::decode(&row[name_index])?;
println!("Found user {name}");
}Perform an aggregate (scalar) operation over a table. The result set contains a single column, with a single row.
use spin_sdk::pg3::{Connection, Decode};
let db = Connection::open("host=localhost user=postgres password=my_password dbname=mydb")?;
let query_result = db.query("SELECT COUNT(*) FROM users", &[])?;
assert_eq!(1, query_result.columns.len());
assert_eq!("count", query_result.columns[0].name);
assert_eq!(1, query_result.rows.len());
let count = i64::decode(&query_result.rows[0][0])?;Delete rows from a PostgreSQL table. This uses Connection::execute()
instead of the query method.
use spin_sdk::pg3::Connection;
let db = Connection::open("host=localhost user=postgres password=my_password dbname=mydb")?;
let rows_affected = db.execute(
"DELETE FROM users WHERE name = $1",
&["Baldrick".to_owned().into()]
)?;A connection to a postgres database.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Connection
impl RefUnwindSafe for Connection
impl Send for Connection
impl Sync for Connection
impl Unpin for Connection
impl UnwindSafe for Connection
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more