1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
//! A synchronous client for the PostgreSQL database. //! //! # Example //! //! ```no_run //! 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. #![doc(html_root_url = "https://docs.rs/postgres/0.17")] #![warn(clippy::all, rust_2018_idioms, missing_docs)] pub use fallible_iterator; pub use tokio_postgres::{ error, row, tls, types, Column, IsolationLevel, Portal, SimpleQueryMessage, Socket, Statement, ToStatement, }; pub use crate::cancel_token::CancelToken; pub use crate::client::*; pub use crate::config::Config; pub use crate::copy_in_writer::CopyInWriter; pub use crate::copy_out_reader::CopyOutReader; #[doc(no_inline)] pub use crate::error::Error; pub use crate::generic_client::GenericClient; #[doc(no_inline)] pub use crate::row::{Row, SimpleQueryRow}; pub use crate::row_iter::RowIter; #[doc(no_inline)] pub use crate::tls::NoTls; pub use crate::transaction::*; pub use crate::transaction_builder::TransactionBuilder; pub mod binary_copy; mod cancel_token; mod client; pub mod config; mod copy_in_writer; mod copy_out_reader; mod generic_client; mod lazy_pin; mod row_iter; mod transaction; mod transaction_builder; #[cfg(test)] mod test;