Struct sqlx_models_orm::PgConnection
[−]pub struct PgConnection { /* private fields */ }
Expand description
A connection to a PostgreSQL database.
Implementations
impl PgConnection
impl PgConnection
pub fn server_version_num(&self) -> Option<u32>
pub fn server_version_num(&self) -> Option<u32>
the version number of the server in libpq
format
impl PgConnection
impl PgConnection
pub async fn copy_in_raw(
&mut self,
statement: &str
) -> Result<PgCopyIn<&mut PgConnection>, Error>
pub async fn copy_in_raw(
&mut self,
statement: &str
) -> Result<PgCopyIn<&mut PgConnection>, Error>
Issue a COPY FROM STDIN
statement and transition the connection to streaming data
to Postgres. This is a more efficient way to import data into Postgres as compared to
INSERT
but requires one of a few specific data formats (text/CSV/binary).
If statement
is anything other than a COPY ... FROM STDIN ...
command, an error is
returned.
Command examples and accepted formats for COPY
data are shown here:
https://www.postgresql.org/docs/current/sql-copy.html
Note
PgCopyIn::finish or PgCopyIn::abort must be called when finished or the connection will return an error the next time it is used.
pub async fn copy_out_raw(
&'c mut self,
statement: &str
) -> Result<Pin<Box<dyn Stream<Item = Result<Bytes, Error>> + Send + 'c, Global>>, Error>
pub async fn copy_out_raw(
&'c mut self,
statement: &str
) -> Result<Pin<Box<dyn Stream<Item = Result<Bytes, Error>> + Send + 'c, Global>>, Error>
Issue a COPY TO STDOUT
statement and transition the connection to streaming data
from Postgres. This is a more efficient way to export data from Postgres but
arrives in chunks of one of a few data formats (text/CSV/binary).
If statement
is anything other than a COPY ... TO STDOUT ...
command,
an error is returned.
Note that once this process has begun, unless you read the stream to completion, it can only be canceled in two ways:
- by closing the connection, or:
- by using another connection to kill the server process that is sending the data as shown in this StackOverflow answer.
If you don’t read the stream to completion, the next time the connection is used it will need to read and discard all the remaining queued data, which could take some time.
Command examples and accepted formats for COPY
data are shown here:
https://www.postgresql.org/docs/current/sql-copy.html
Trait Implementations
impl<'c> Acquire<'c> for &'c mut PgConnection
impl<'c> Acquire<'c> for &'c mut PgConnection
type Database = Postgres
type Connection = &'c mut <Postgres as Database>::Connection
fn acquire(
self
) -> Pin<Box<dyn Future<Output = Result<<&'c mut PgConnection as Acquire<'c>>::Connection, Error>> + Send + 'c, Global>>
fn begin(
self
) -> Pin<Box<dyn Future<Output = Result<Transaction<'c, Postgres>, Error>> + Send + 'c, Global>>
impl<'lock, C> AsMut<PgConnection> for PgAdvisoryLockGuard<'lock, C> where
C: AsMut<PgConnection>,
impl<'lock, C> AsMut<PgConnection> for PgAdvisoryLockGuard<'lock, C> where
C: AsMut<PgConnection>,
Mutable access to the underlying connection is provided so it can still be used like normal, even allowing locks to be taken recursively.
However, replacing the connection with a different one using, e.g. std::mem::replace()
is a logic error and will cause a warning to be logged by the PostgreSQL server when this
guard attempts to release the lock.
fn as_mut(&mut self) -> &mut PgConnection
fn as_mut(&mut self) -> &mut PgConnection
Converts this type into a mutable reference of the (usually inferred) input type.
impl<'lock, C> AsRef<PgConnection> for PgAdvisoryLockGuard<'lock, C> where
C: AsMut<PgConnection> + AsRef<PgConnection>,
impl<'lock, C> AsRef<PgConnection> for PgAdvisoryLockGuard<'lock, C> where
C: AsMut<PgConnection> + AsRef<PgConnection>,
fn as_ref(&self) -> &PgConnection
fn as_ref(&self) -> &PgConnection
Converts this type into a shared reference of the (usually inferred) input type.
impl Connection for PgConnection
impl Connection for PgConnection
type Database = Postgres
type Options = PgConnectOptions
fn close(
self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'static, Global>>
fn close(
self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'static, Global>>
Explicitly close this database connection. Read more
fn ping(
&mut self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send, Global>>
fn ping(
&mut self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send, Global>>
Checks if a connection to the database is still valid.
fn begin(
&mut self
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_, <PgConnection as Connection>::Database>, Error>> + Send, Global>> where
PgConnection: Sized,
fn begin(
&mut self
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_, <PgConnection as Connection>::Database>, Error>> + Send, Global>> where
PgConnection: Sized,
Begin a new transaction or establish a savepoint within the active transaction. Read more
fn cached_statements_size(&self) -> usize
fn cached_statements_size(&self) -> usize
The number of statements currently cached in the connection.
fn clear_cached_statements(
&mut self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send, Global>>
fn clear_cached_statements(
&mut self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send, Global>>
Removes all statements from the cache, closing them on the server if needed. Read more
fn transaction<'a, F, R, E>(
&'a mut self,
callback: F
) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'a, Global>> where
F: 'a + for<'c> FnOnce(&'c mut Transaction<'_, Self::Database>) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'c, Global>> + Send + Sync,
R: Send,
E: From<Error> + Send,
fn transaction<'a, F, R, E>(
&'a mut self,
callback: F
) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'a, Global>> where
F: 'a + for<'c> FnOnce(&'c mut Transaction<'_, Self::Database>) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'c, Global>> + Send + Sync,
R: Send,
E: From<Error> + Send,
Execute the function inside a transaction. Read more
impl Debug for PgConnection
impl Debug for PgConnection
impl<'c> Executor<'c> for &'c mut PgConnection
impl<'c> Executor<'c> for &'c mut PgConnection
type Database = Postgres
fn fetch_many<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Stream<Item = Result<Either<PgQueryResult, PgRow>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, <&'c mut PgConnection as Executor<'c>>::Database>,
fn fetch_many<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Stream<Item = Result<Either<PgQueryResult, PgRow>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, <&'c mut PgConnection as Executor<'c>>::Database>,
Execute multiple queries and return the generated results as a stream from each query, in a stream. Read more
fn fetch_optional<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Future<Output = Result<Option<PgRow>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, <&'c mut PgConnection as Executor<'c>>::Database>,
fn fetch_optional<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Future<Output = Result<Option<PgRow>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, <&'c mut PgConnection as Executor<'c>>::Database>,
Execute the query and returns at most one row.
fn prepare_with<'e, 'q>(
self,
sql: &'q str,
parameters: &'e [PgTypeInfo]
) -> Pin<Box<dyn Future<Output = Result<PgStatement<'q>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
fn prepare_with<'e, 'q>(
self,
sql: &'q str,
parameters: &'e [PgTypeInfo]
) -> Pin<Box<dyn Future<Output = Result<PgStatement<'q>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
Prepare the SQL query, with parameter type information, to inspect the type information about its parameters and results. Read more
fn execute<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
fn execute<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
Execute the query and return the total number of rows affected.
fn execute_many<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
fn execute_many<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
Execute multiple queries and return the rows affected from each query, in a stream.
fn fetch<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
fn fetch<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
Execute the query and return the generated results as a stream.
fn fetch_all<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row, Global>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
fn fetch_all<'e, 'q, E>(
self,
query: E
) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row, Global>, Error>> + Send + 'e, Global>> where
'q: 'e,
'c: 'e,
E: 'q + Execute<'q, Self::Database>,
Execute the query and return all the generated results, collected into a Vec
.
impl Migrate for PgConnection
impl Migrate for PgConnection
fn ensure_migrations_table(
&mut self
) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send, Global>>
fn version(
&mut self
) -> Pin<Box<dyn Future<Output = Result<Option<(i64, bool)>, MigrateError>> + Send, Global>>
fn version(
&mut self
) -> Pin<Box<dyn Future<Output = Result<Option<(i64, bool)>, MigrateError>> + Send, Global>>
fn dirty_version(
&mut self
) -> Pin<Box<dyn Future<Output = Result<Option<i64>, MigrateError>> + Send, Global>>
fn list_applied_migrations(
&mut self
) -> Pin<Box<dyn Future<Output = Result<Vec<AppliedMigration, Global>, MigrateError>> + Send, Global>>
fn lock(
&mut self
) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send, Global>>
fn unlock(
&mut self
) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send, Global>>
fn validate<'e, 'm>(
&'e mut self,
migration: &'m Migration
) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + 'm, Global>> where
'e: 'm,
fn validate<'e, 'm>(
&'e mut self,
migration: &'m Migration
) -> Pin<Box<dyn Future<Output = Result<(), MigrateError>> + Send + 'm, Global>> where
'e: 'm,
fn apply<'e, 'm>(
&'e mut self,
migration: &'m Migration
) -> Pin<Box<dyn Future<Output = Result<Duration, MigrateError>> + Send + 'm, Global>> where
'e: 'm,
fn revert<'e, 'm>(
&'e mut self,
migration: &'m Migration
) -> Pin<Box<dyn Future<Output = Result<Duration, MigrateError>> + Send + 'm, Global>> where
'e: 'm,
Auto Trait Implementations
impl !RefUnwindSafe for PgConnection
impl Send for PgConnection
impl Sync for PgConnection
impl Unpin for PgConnection
impl !UnwindSafe for PgConnection
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more