Атрибут local_table класса Mapper
Атрибут local_table класса Mapper возвращает
объект Table, который был передан при настройке
отображения класса. Этот атрибут указывает на локальную
таблицу, с которой связан маппер, и позволяет получить
доступ к ее колонкам, имени и метаданным.
Атрибут local_table особенно полезен, когда нужно
программно получить информацию о таблице, связанной с
классом, без необходимости хранить ссылку на объект
Table отдельно.
Синтаксис
mapper.local_table
Пример
Давайте создадим модель и получим таблицу через
атрибут local_table:
from sqlalchemy import create_engine, String
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] = mapped_column(String(100))
table = Article.__mapper__.local_table
print(table)
print(table.name)
Результат выполнения кода:
Table('articles', MetaData(), Column('id', Integer(), table=<articles>, primary_key=True, nullable=False), Column('title', String(length=100), table=<articles>, nullable=False), schema=None)
"articles"
Пример
Давайте получим список колонок таблицы через
атрибут local_table:
from sqlalchemy import create_engine, String
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] = mapped_column(String(100))
text: Mapped[str] = mapped_column(String(500))
table = Article.__mapper__.local_table
for column in table.columns:
print(column.name)
Результат выполнения кода:
"id"
"title"
"text"
Пример
Давайте сравним local_table с объектом
Table, хранящимся в метаданных:
from sqlalchemy import create_engine, String
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] = mapped_column(String(100))
local = Article.__mapper__.local_table
from_metadata = Article.metadata.tables['articles']
print(local is from_metadata)
Результат выполнения кода:
True
Смотрите также
-
класс
Mapper,
который управляет отображением класса на таблицу -
атрибут
columns,
который хранит коллекцию колонок маппера -
атрибут
primary_key,
который содержит первичный ключ таблицы -
атрибут
persist_selectable,
который указывает на объект для операций SELECT