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

Метод get_foreign_keys

Метод get_foreign_keys класса Inspector возвращает информацию о внешних ключах таблицы. Первым параметром метод принимает имя таблицы. Вторым необязательным параметром передается имя схемы schema. Третьим необязательным параметром можно передать словарь kw с дополнительными настройками диалекта. Метод возвращает список словарей, каждый из которых описывает один внешний ключ: его имя, столбцы, целевую таблицу, целевую схему и целевые столбцы.

Синтаксис

Inspector.get_foreign_keys(table_name, [schema], [kw])

Пример

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

from sqlalchemy import create_engine, ForeignKey, inspect 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) title: Mapped[str] class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] user_id: Mapped[int] = mapped_column(ForeignKey('users.id')) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) inspector = inspect(engine) res = inspector.get_foreign_keys('articles') print(res)

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

[{'name': None, 'constrained_columns': ['user_id'], 'referred_schema': None, 'referred_table': 'users', 'referred_columns': ['id'], 'options': {}}]

Пример

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

<+python+> from sqlalchemy import create_engine, ForeignKey, inspect 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) title: Mapped[str] class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] user_id: Mapped[int] = mapped_column(ForeignKey('users.id')) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) inspector = inspect(engine) res = inspector.get_foreign_keys('articles') for fk in res: print('columns:', fk['constrained_columns']) print('ref table:', fk['referred_table']) print('ref columns:', fk['referred_columns']) <-python+>

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

"columns: ['user_id']" "ref table: users" "ref columns: ['id']"

Пример

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

from sqlalchemy import create_engine, inspect from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Mapped[int] = mapped_column(primary_key=True) title: Mapped[str] engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) inspector = inspect(engine) res = inspector.get_foreign_keys('articles') print(res)

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

[]

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

  • класс Inspector,
    который предоставляет доступ к метаданным базы
  • метод get_columns,
    который возвращает список столбцов таблицы
  • метод get_pk_constraint,
    который возвращает первичный ключ таблицы
  • метод get_indexes,
    который возвращает индексы таблицы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить