postgres 0.18.1

A native, synchronous PostgreSQL client
Documentation

A synchronous client for the PostgreSQL database.

Example

use postgres::{Client, NoTls};

# fn main() -> Result<(), postgres::Error> {
let mut client = Client::connect("host=localhost user=postgres", NoTls)?;

client.batch_execute("
CREATE TABLE person (
id      SERIAL PRIMARY KEY,
name    TEXT NOT NULL,
data    BYTEA
)
")?;

let name = "Ferris";
let data = None::<&[u8]>;
client.execute(
"INSERT INTO person (name, data) VALUES ($1, $2)",
&[&name, &data],
)?;

for row in client.query("SELECT id, name, data FROM person", &[])? {
let id: i32 = row.get(0);
let name: &str = row.get(1);
let data: Option<&[u8]> = row.get(2);

println!("found person: {} {} {:?}", id, name, data);
}
# Ok(())
# }

Implementation

This crate is a lightweight wrapper over tokio-postgres. The postgres::Client is simply a wrapper around a tokio_postgres::Client along side a tokio Runtime. The client simply blocks on the futures provided by the async client.

SSL/TLS support

TLS support is implemented via external libraries. Client::connect and Config::connect take a TLS implementation as an argument. The NoTls type in this crate can be used when TLS is not required. Otherwise, the postgres-openssl and postgres-native-tls crates provide implementations backed by the openssl and native-tls crates, respectively.

Features

The following features can be enabled from Cargo.toml:

Feature Description Extra dependencies Default
with-bit-vec-0_6 Enable support for the bit-vec crate. bit-vec 0.6 no
with-chrono-0_4 Enable support for the chrono crate. chrono 0.4 no
with-eui48-0_4 Enable support for the eui48 crate. eui48 0.4 no
with-geo-types-0_4 Enable support for the 0.4 version of the geo-types crate. geo-types 0.4 no
with-geo-types-0_5 Enable support for the 0.5 version of the geo-types crate. geo-types 0.5 no
with-serde_json-1 Enable support for the serde_json crate. serde_json 1.0 no
with-uuid-0_8 Enable support for the uuid crate. uuid 0.8 no
with-time-0_2 Enable support for the time crate. time 0.2 no