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

Метод dispose

Метод dispose класса Pool закрывает все соединения, находящиеся в пуле, и помечает пул как закрытый. После вызова этого метода пул больше не может выдавать соединения, а все освобожденные соединения будут закрыты, а не возвращены обратно в пул. Параметров метод не принимает.

Синтаксис

pool.dispose()

Пример

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

from sqlalchemy import create_engine engine = create_engine('sqlite:///:memory:') pool = engine.pool print(pool.status()) pool.dispose() print(pool.status())

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

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

Пример

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

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') pool = engine.pool with engine.connect() as conn: conn.execute(text('SELECT 1')) print('before dispose:', pool.status()) pool.dispose() print('after dispose:', pool.status()) try: with engine.connect() as conn: conn.execute(text('SELECT 1')) except Exception as e: print('error:', type(e).__name__)

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

"before dispose: Pool size: 5 Connections in pool: 1 Current Overflow: -4 Current Checked out connections: 0" "after dispose: Pool size: 5 Connections in pool: 0 Current Overflow: -4 Current Checked out connections: 0" "error: ResourceClosedError"

Пример

Давайте используем dispose для корректного завершения работы приложения после выполнения запросов:

from sqlalchemy import create_engine, text engine = create_engine('sqlite:///:memory:') with engine.connect() as conn: conn.execute(text('CREATE TABLE articles (id INTEGER PRIMARY KEY, title TEXT)')) conn.execute(text("INSERT INTO articles (title) VALUES ('article 1')")) conn.commit() with engine.connect() as conn: res = conn.execute(text('SELECT title FROM articles')).fetchall() print(res) engine.dispose() print('disposed')

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

[('article 1',)] "disposed"

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

  • класс Pool,
    который представляет пул соединений
  • метод connect,
    который выдает соединение из пула
  • метод recreate,
    который пересоздает пул соединений
  • метод status,
    который возвращает состояние пула
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить