Класс Pool
Класс Pool представляет собой пул соединений
с базой данных. Пул хранит открытые соединения
и переиспользует их между запросами, что позволяет
избежать постоянного открытия и закрытия соединений.
Экземпляр пула создается автоматически при создании
движка через create_engine и доступен через
атрибут pool объекта Engine. Пул управляет
количеством соединений, временем их жизни и
поведением при переполнении.
Синтаксис
engine.pool
Пример
Давайте создадим движок и получим объект пула
через атрибут pool:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
print(engine.pool)
Результат выполнения кода:
"<sqlalchemy.pool.impl.SingletonThreadPool object at 0x...>"
Пример
Давайте посмотрим статус пула после выполнения
запроса через метод status:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('SELECT 1'))
print(engine.pool.status())
Результат выполнения кода:
"Pool size: 1 Connections in pool: 0 Current Overflow: -1 Current Checked out connections: 0"
Пример
Давайте освободим все соединения пула
методом dispose:
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
engine.pool.dispose()
print(engine.pool.status())
Результат выполнения кода:
"Pool size: 1 Connections in pool: 0 Current Overflow: -1 Current Checked out connections: 0"