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

Атрибут primary_key класса Mapper

Атрибут primary_key класса Mapper возвращает кортеж объектов Column, которые составляют первичный ключ таблицы, связанной с маппируемым классом. Если первичный ключ составной, кортеж содержит несколько колонок. Атрибут доступен только для чтения и вычисляется автоматически при конфигурации маппера.

Синтаксис

Mapper.primary_key

Пример

Давайте создадим модель с простым первичным ключом и выведем кортеж колонок через атрибут primary_key:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) mapper = Article.__mapper__ print(mapper.primary_key)

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

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

Пример

Давайте переберем все колонки первичного ключа и выведем их имена:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) mapper = Article.__mapper__ for column in mapper.primary_key: print(column.name)

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

"id"

Пример

Давайте рассмотрим составной первичный ключ. Создадим таблицу articles, где ключ состоит из колонок id и num:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) num: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) mapper = Article.__mapper__ print(mapper.primary_key)

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

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

Пример

Давайте выведем список имен колонок составного первичного ключа:

from sqlalchemy import create_engine, Integer, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(Integer, primary_key=True) num: Mapped[int] = mapped_column(Integer, primary_key=True) title: Mapped[str] = mapped_column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) mapper = Article.__mapper__ names = [column.name for column in mapper.primary_key] print(names)

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

['id', 'num']

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

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