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

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

Атрибут object класса InstanceState возвращает исходный пользовательский объект ORM, к которому привязано это состояние. Каждый экземпляр модели в SQLAlchemy имеет связанный объект InstanceState, хранящий служебную информацию. Атрибут object позволяет получить обратную ссылку от состояния к самому объекту модели.

Синтаксис

state.object

Пример

Давайте создадим объект модели и получим его состояние через функцию inspect, а затем извлечем исходный объект атрибутом object:

from sqlalchemy import create_engine, inspect from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column 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) article = Article(id=1, title='article', text='sqlite') state = inspect(article) print(state.object)

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

<__main__.Article object at 0x7f8a1c0b4d90>

Пример

Давайте убедимся, что атрибут object возвращает тот же самый объект, который мы создали, и что через него можно читать свойства модели:

from sqlalchemy import create_engine, inspect from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) article = Article(id=1, title='article') state = inspect(article) print(state.object is article) print(state.object.title)

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

True "article"

Пример

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

from sqlalchemy import create_engine, inspect, select 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] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) with Session(engine) as session: session.add(Article(id=1, title='article')) session.commit() with Session(engine) as session: article = session.scalars(select(Article)).one() state = inspect(article) print(state.object.title) print(state.object is article)

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

"article" True

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

  • класс InstanceState,
    который хранит состояние объекта ORM
  • атрибут class_,
    который возвращает класс объекта модели
  • атрибут mapper,
    который возвращает маппер объекта модели
  • атрибут dict,
    который возвращает словарь загруженных атрибутов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить