Метод references класса ForeignKey
Метод references класса ForeignKey
возвращает объект Column, на который
ссылается данный внешний ключ. Метод не принимает
параметров и используется для получения информации
о целевом столбце связи.
Синтаксис
foreign_key.references()
Пример
Давайте создадим две таблицы, связанные внешним ключом, и получим столбец, на который ссылается внешний ключ:
from sqlalchemy import create_engine, 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'))
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
fk = Article.__table__.c.user_id.foreign_keys[0]
ref = fk.references()
print(ref)
Результат выполнения кода:
"users.id"
Пример
Давайте сравним объект, полученный методом
references, с реальным столбцом таблицы:
from sqlalchemy import create_engine, 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'))
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
fk = Article.__table__.c.user_id.foreign_keys[0]
ref = fk.references()
print(ref is User.__table__.c.id)
print(ref.name)
print(ref.table.name)
Результат выполнения кода:
True
"id"
"users"
Смотрите также
-
класс
ForeignKey,
который представляет внешний ключ таблицы -
метод
get_referent,
который возвращает таблицу, на которую ссылается ключ -
атрибут
column,
который хранит столбец с внешним ключом -
атрибут
parent,
который хранит таблицу-владельца внешнего ключа