Expand description
Provides the connection pool for asynchronous SQLx connections.
Opening a database connection for each and every operation to the database can quickly become expensive. Furthermore, sharing a database connection between threads and functions can be difficult to express in Rust.
A connection pool is a standard technique that can manage opening and re-using connections. Normally it also enforces a maximum number of connections as these are an expensive resource on the database server.
SQLx provides a canonical connection pool implementation intended to satisfy the majority of use cases.
See Pool for details.
Type aliases are provided for each database to make it easier to sprinkle Pool
through
your codebase:
- [MssqlPool][crate::mssql::MssqlPool] (MSSQL)
- [MySqlPool][crate::mysql::MySqlPool] (MySQL)
- [PgPool][crate::postgres::PgPool] (PostgreSQL)
- [SqlitePool][crate::sqlite::SqlitePool] (SQLite)
§Opening a connection pool
A new connection pool with a default configuration can be created by supplying Pool
with the database driver and a connection string.
use sqlx::Pool;
use sqlx::postgres::Postgres;
let pool = Pool::<Postgres>::connect("postgres://").await?;
For convenience, database-specific type aliases are provided:
use sqlx::mssql::MssqlPool;
let pool = MssqlPool::connect("mssql://").await?;
§Using a connection pool
A connection pool implements Executor
and can be used directly
when executing a query. Notice that only an immutable reference (&Pool
) is needed.
sqlx::query("DELETE FROM articles").execute(&pool).await?;
A connection or transaction may also be manually acquired with
Pool::acquire
or
Pool::begin
.
Modules§
Structs§
- A future that resolves when the pool is closed.
- An asynchronous pool of SQLx database connections.
- A connection managed by a
Pool
. - Metadata for the connection being processed by a
PoolOptions
callback. - Configuration options for
Pool
.