Метод dispose
Метод dispose класса Engine закрывает
пул соединений и освобождает все ресурсы, связанные
с движком базы данных. После вызова этого метода
движок можно использовать снова - при следующем
обращении к базе будет создан новый пул соединений.
Метод не принимает обязательных параметров и
возвращает None.
Синтаксис
engine.dispose()
Пример
Давайте создадим движок для базы SQLite
в памяти, выполним запрос, а затем закроем пул
соединений методом dispose:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
res = conn.execute(text('SELECT 1'))
print(res.scalar())
engine.dispose()
print('Pool disposed')
Результат выполнения кода:
1
"Pool disposed"
Пример
Давайте убедимся, что после вызова 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, title TEXT)'))
conn.execute(text("INSERT INTO articles VALUES (1, 'article')"))
conn.commit()
engine.dispose()
with engine.connect() as conn:
res = conn.execute(text('SELECT title FROM articles'))
print(res.scalar())
Результат выполнения кода:
"article"
Пример
Давайте посмотрим на атрибут pool до и после
вызова метода dispose:
from sqlalchemy import create_engine, text
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute(text('SELECT 1'))
pool_before = engine.pool
engine.dispose()
pool_after = engine.pool
print(pool_before is pool_after)
Результат выполнения кода:
True