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

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

Атрибут column класса ForeignKey возвращает объект Column, на который ссылается данный внешний ключ. Это позволяет получить доступ к метаданным целевой колонки: ее имени, таблице, типу и другим свойствам. Атрибут доступен только после того, как внешний ключ был связан с целевой таблицей, то есть после определения всех таблиц в метаданных.

Синтаксис

foreign_key.column

Пример

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

from sqlalchemy import MetaData, Table, Column, Integer, String, ForeignKey metadata = MetaData() users = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String) ) articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('user_id', Integer, ForeignKey('users.id')) ) fk = articles.c.user_id.foreign_keys[0] print(fk.column)

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

"users.id"

Пример

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

from sqlalchemy import MetaData, Table, Column, Integer, String, ForeignKey metadata = MetaData() users = Table( 'users', metadata, Column('id', Integer, primary_key=True), Column('name', String) ) articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String), Column('user_id', Integer, ForeignKey('users.id')) ) fk = articles.c.user_id.foreign_keys[0] target_column = fk.column print(target_column.name) print(target_column.table.name)

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

"id" "users"

Пример

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

from sqlalchemy import ForeignKey, Integer, 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) class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] = mapped_column(String) user_id: Mapped[int] = mapped_column(ForeignKey('users.id')) fk = Article.__table__.c.user_id.foreign_keys[0] print(fk.column) print(fk.column.name)

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

"users.id" "id"

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

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