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

Атрибут unloaded класса InstanceState

Атрибут unloaded класса InstanceState возвращает логическое значение, которое показывает, был ли объект выгружен из сессии. Если объект был отсоединён от сессии, но всё ещё находится в памяти, атрибут unloaded принимает значение True. Если объект связан с сессией или ещё не был загружен, атрибут возвращает False. Доступ к атрибуту осуществляется через функцию inspect, которая принимает экземпляр модели и возвращает объект InstanceState.

Синтаксис

inspect(instance).unloaded

Пример

Давайте создадим модель Article и проверим значение атрибута unloaded у загруженного объекта:

from sqlalchemy import create_engine, inspect 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] text: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', text='text') session.add(article) session.commit() state = inspect(article) print(state.unloaded)

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

False

Пример

Теперь давайте выгрузим объект из сессии и снова проверим значение атрибута unloaded:

from sqlalchemy import create_engine, inspect 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] text: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', text='text') session.add(article) session.commit() session.expunge(article) state = inspect(article) print(state.unloaded)

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

True

Пример

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

from sqlalchemy import create_engine, inspect 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] text: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: article = Article(title='article', text='text') state = inspect(article) print(state.unloaded)

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

False

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

  • класс InstanceState,
    который хранит состояние экземпляра модели
  • атрибут session,
    который возвращает сессию объекта
  • атрибут detached,
    который показывает, отсоединён ли объект от сессии
  • атрибут persistent,
    который показывает, сохранён ли объект в базе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить