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

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

Атрибут mapper класса InstanceState возвращает объект Mapper, который сопоставляет класс модели с таблицей базы данных. Экземпляр InstanceState извлекается из самой модели через функцию inspect. Атрибут mapper не принимает параметров и доступен только для чтения.

Синтаксис

state.mapper

Пример

Давайте создадим модель и получим ее маппер через атрибут mapper:

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(title='article 1') state = inspect(article) print(state.mapper)

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

"Mapper[Article(articles)]"

Пример

Давайте через маппер узнаем имя таблицы и первичный ключ модели:

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(title='article 1') state = inspect(article) print(state.mapper.local_table.name) print(state.mapper.primary_key)

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

"articles" "(Column('id', Integer(), table=<articles>, primary_key=True, nullable=False),)"

Пример

Давайте сравним маппер отсоединенного экземпляра с маппером класса:

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(title='article 1') state = inspect(article) print(state.mapper is inspect(Article).mapper) print(state.mapper.class_)

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

"True" "<class '__main__.Article'>"

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

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