Функция close_all_sessions
Функция close_all_sessions закрывает
все сессии, которые были зарегистрированы
в реестре сессий. Она не принимает
обязательных параметров и выполняет
последовательное закрытие каждой активной
сессии. Функция полезна при завершении
работы приложения, в тестах и при
необходимости сбросить состояние всех
сессий перед новым запуском.
Синтаксис
close_all_sessions()
Пример
Давайте создадим две сессии и закроем их все одной функцией:
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
from sqlalchemy.orm import close_all_sessions
engine = create_engine('sqlite:///:memory:')
session1 = Session(engine)
session2 = Session(engine)
print(session1.is_active)
print(session2.is_active)
close_all_sessions()
print(session1.is_active)
print(session2.is_active)
Результат выполнения кода:
True
True
False
False
Пример
Давайте создадим модель и поработаем с сессией, а затем закроем все сессии:
from sqlalchemy import create_engine, String
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session
from sqlalchemy.orm import close_all_sessions
class Base(DeclarativeBase):
pass
class Article(Base):
__tablename__ = 'articles'
id: Mapped[int] = mapped_column(primary_key=True)
title: Mapped[str] = mapped_column(String(100))
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
session = Session(engine)
article = Article(title='article')
session.add(article)
session.commit()
res = session.query(Article).all()
print(res[0].title)
close_all_sessions()
print(session.is_active)
Результат выполнения кода:
article
False
Смотрите также
-
функцию
object_session,
которая возвращает сессию для объекта -
функцию
make_transient,
которая переводит объект в состояние transient -
функцию
make_transient_to_detached,
которая переводит объект в состояние detached -
класс
DeclarativeBase,
который является базой для декларативных моделей