РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
92 of 711 menu

Класс NullPool

Класс NullPool создает пул соединений, который не хранит соединения после их закрытия. Каждый раз, когда движку требуется соединение, создается новое физическое соединение с базой данных. Как только соединение закрывается, оно немедленно разрывается. Этот пул полезен для тестирования, для работы с базами данных, которые плохо переносят длительные соединения, а также в многопроцессных приложениях, где пул не должен разделяться между процессами.

Синтаксис

from sqlalchemy.pool import NullPool pool = NullPool(creator, [reset_on_return])

Пример

Давайте создадим движок для базы SQLite в памяти с пулом NullPool:

from sqlalchemy import create_engine, text from sqlalchemy.pool import NullPool engine = create_engine( 'sqlite:///:memory:', poolclass=NullPool ) with engine.connect() as conn: res = conn.execute(text('SELECT 1')) print(res.scalar())

Результат выполнения кода:

"1"

Пример

Давайте убедимся, что после закрытия соединения пул не хранит его и создает новое при следующем подключении:

from sqlalchemy import create_engine from sqlalchemy.pool import NullPool engine = create_engine( 'sqlite:///:memory:', poolclass=NullPool ) conn1 = engine.connect() print(engine.pool.status()) conn1.close() print(engine.pool.status()) conn2 = engine.connect() print(engine.pool.status()) conn2.close()

Результат выполнения кода:

"Pool size: 0 Connections in pool: 0 Current Overflow: 0 Current Checked out connections: 0" "Pool size: 0 Connections in pool: 0 Current Overflow: 0 Current Checked out connections: 0" "Pool size: 0 Connections in pool: 0 Current Overflow: 0 Current Checked out connections: 0"

Пример

Давайте сравним поведение NullPool и QueuePool при повторном подключении:

from sqlalchemy import create_engine from sqlalchemy.pool import NullPool, QueuePool engine_null = create_engine( 'sqlite:///:memory:', poolclass=NullPool ) conn = engine_null.connect() conn.close() print(engine_null.pool.status()) engine_queue = create_engine( 'sqlite:///:memory:', poolclass=QueuePool ) conn = engine_queue.connect() conn.close() print(engine_queue.pool.status())

Результат выполнения кода:

"Pool size: 0 Connections in pool: 0 Current Overflow: 0 Current Checked out connections: 0" "Pool size: 5 Connections in pool: 1 Current Overflow: 0 Current Checked out connections: 0"

Смотрите также

  • функцию create_engine,
    которая создает движок базы данных
  • класс QueuePool,
    который представляет пул соединений по умолчанию
  • класс StaticPool,
    который хранит одно соединение для всех запросов
  • функцию create_pool_from_url,
    которая создает пул из строки URL подключения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить