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

Атрибут parent класса ForeignKey

Атрибут parent класса ForeignKey возвращает объект Column, к которому привязан данный внешний ключ. Иными словами, это колонка-владелец внешнего ключа. Атрибут не принимает параметров и доступен только для чтения. Его удобно использовать, когда нужно из одной колонки узнать, к какой таблице она относится.

Синтаксис

foreign_key.parent

Пример

Давайте создадим таблицу с внешним ключом и посмотрим на колонку-владельца через атрибут parent:

from sqlalchemy import ForeignKey, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class User(Base): __tablename__ = 'users' id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(String(50)) class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) user_id: Mapped[int] = mapped_column(ForeignKey('users.id')) fk = Article.__table__.c.user_id.foreign_keys[0] print(fk.parent)

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

"articles.user_id"

Пример

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

from sqlalchemy import ForeignKey, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class User(Base): __tablename__ = 'users' id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(String(50)) class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) user_id: Mapped[int] = mapped_column(ForeignKey('users.id')) fk = Article.__table__.c.user_id.foreign_keys[0] print(fk.parent.name) print(fk.parent.table.name)

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

"user_id" "articles"

Пример

Давайте переберём все внешние ключи колонки и для каждого выведем колонку-владельца через атрибут parent:

from sqlalchemy import ForeignKey, String from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class User(Base): __tablename__ = 'users' id: Mapped[int] = mapped_column(primary_key=True) name: Mapped[str] = mapped_column(String(50)) class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String(100)) user_id: Mapped[int] = mapped_column(ForeignKey('users.id')) for fk in Article.__table__.c.user_id.foreign_keys: print(fk.parent)

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

"articles.user_id"

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

  • класс ForeignKey,
    который представляет внешний ключ
  • атрибут column,
    который возвращает целевую колонку внешнего ключа
  • атрибут name,
    который хранит имя ограничения внешнего ключа
  • атрибут ondelete,
    который задаёт поведение при удалении связанной строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить