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

Метод references

Метод references класса Column возвращает коллекцию объектов ForeignKey, которые ссылаются на данную колонку из других таблиц. Метод не принимает параметров и возвращает объект ReadOnlyColumnCollection, содержащий все внешние ключи, указывающие на эту колонку. Метод полезен при анализе связей между таблицами и построении обратных зависимостей.

Синтаксис

column.references

Пример

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

from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import DeclarativeBase class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True) title = Column(String) class Comment(Base): __tablename__ = 'comments' id = Column(Integer, primary_key=True) text = Column(String) article_id = Column(Integer, ForeignKey('articles.id')) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) for fk in Article.__table__.c.id.references: print(fk)

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

"ForeignKey('articles.id')"

Пример

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

from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import DeclarativeBase class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True) title = Column(String) status = Column(String) class Comment(Base): __tablename__ = 'comments' id = Column(Integer, primary_key=True) text = Column(String) article_id = Column(Integer, ForeignKey('articles.id')) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) print(len(Article.__table__.c.status.references)) print(len(Article.__table__.c.id.references))

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

0 1

Пример

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

from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import DeclarativeBase class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id = Column(Integer, primary_key=True) title = Column(String) class Comment(Base): __tablename__ = 'comments' id = Column(Integer, primary_key=True) text = Column(String) article_id = Column(Integer, ForeignKey('articles.id')) class Like(Base): __tablename__ = 'likes' id = Column(Integer, primary_key=True) article_id = Column(Integer, ForeignKey('articles.id')) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) for fk in Article.__table__.c.id.references: print(fk.parent)

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

"comments.article_id" "likes.article_id"

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

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