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

Метод get_referent

Метод get_referent класса ForeignKey возвращает объект Column, на который ссылается данный внешний ключ. Метод принимает один параметр table - объект таблицы, к которой относится внешний ключ. Возвращается колонка из целевой таблицы, указанной в определении внешнего ключа.

Синтаксис

foreign_key.get_referent(table)

Пример

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

from sqlalchemy import Table, Column, Integer, String, MetaData, 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] referent = fk.get_referent(articles) print(referent)

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

"users.id"

Пример

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

from sqlalchemy import Table, Column, Integer, String, MetaData, 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] referent = fk.get_referent(articles) print(referent.table.name) print(referent.name)

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

"users" "id"

Пример

Давайте используем метод get_referent вместе с методом references для проверки связи между колонками:

from sqlalchemy import Table, Column, Integer, String, MetaData, 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] referent = fk.get_referent(articles) is_same = fk.references(referent) print(is_same)

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

"True"

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

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