Класс QueuePool
Класс QueuePool представляет собой
пул соединений с базой данных, в котором
соединения хранятся в очереди и выдаются
по мере необходимости. Это пул по умолчанию
для большинства движков баз данных. Первым
параметром передаётся функция создания
соединения, а также поддерживаются параметры
pool_size, max_overflow,
timeout и recycle, которые
управляют размером пула и временем жизни
соединений.
Синтаксис
QueuePool(creator, pool_size=5, max_overflow=10, timeout=30, recycle=-1)
Пример
Давайте создадим движок с явным использованием
пула QueuePool и посмотрим на его параметры:
from sqlalchemy import create_engine
from sqlalchemy.pool import QueuePool
engine = create_engine(
'sqlite:///:memory:',
poolclass=QueuePool,
pool_size=5,
max_overflow=10
)
print(engine.pool)
print(engine.pool.size())
Результат выполнения кода:
"<sqlalchemy.pool.impl.QueuePool object at ...>"
"5"
Пример
Давайте откроем соединение и проверим состояние пула:
from sqlalchemy import create_engine, text
from sqlalchemy.pool import QueuePool
engine = create_engine(
'sqlite:///:memory:',
poolclass=QueuePool,
pool_size=5
)
with engine.connect() as conn:
conn.execute(text('SELECT 1'))
print(engine.pool.status())
Результат выполнения кода:
"Pool size: 5 Connections in pool: 1 Current Overflow: -4 Current Checked out connections: 0"
Итоговый SQL запрос:
SELECT 1
Смотрите также
-
функцию
create_engine,
которая создает движок с пулом соединений -
класс
NullPool,
который отключает пулирование соединений -
класс
StaticPool,
который использует одно соединение для всех запросов -
функцию
create_pool_from_url,
которая создает пул из строки URL