Метод 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': {}}]
Пример
Давайте выведем данные о внешнем ключе построчно, обратившись к элементам словаря:
Результат выполнения кода:
"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,
который возвращает индексы таблицы