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

Атрибут is_active

Атрибут is_active класса Session возвращает булево значение, которое показывает, активна ли сессия в данный момент. Сессия считается активной, если она была создана и еще не закрыта методом close и не аннулирована методом invalidate. Параметров атрибут не принимает. Значение True говорит о том, что сессия готова выполнять запросы, а False - что сессия больше не может использоваться.

Синтаксис

session.is_active

Пример

Давайте создадим сессию и проверим ее активность сразу после создания:

from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') session = Session(engine) print(session.is_active) session.close()

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

"True"

Пример

Теперь давайте закроем сессию и снова проверим атрибут is_active:

from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') session = Session(engine) print(session.is_active) session.close() print(session.is_active)

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

"True" "False"

Пример

Давайте проверим активность сессии после вызова метода invalidate:

from sqlalchemy import create_engine from sqlalchemy.orm import Session engine = create_engine('sqlite:///:memory:') session = Session(engine) print(session.is_active) session.invalidate() print(session.is_active)

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

"True" "False"

Пример

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

from sqlalchemy import create_engine, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(50)) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) session = Session(engine) session.add(Article(title='article 1')) session.commit() if session.is_active: res = session.query(Article).all() print([article.title for article in res]) session.close()

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

['article 1']

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

  • класс Session,
    который представляет сессию работы с базой данных
  • метод close,
    который закрывает сессию и делает ее неактивной
  • метод invalidate,
    который аннулирует сессию и все ее транзакции
  • метод connection,
    который возвращает соединение с базой данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить