Метод get_indexes
Метод get_indexes класса Inspector
возвращает информацию об индексах таблицы.
Первым параметром метод принимает имя таблицы.
Вторым необязательным параметром передается
имя схемы. Метод возвращает список словарей,
каждый из которых описывает один индекс.
Синтаксис
inspector.get_indexes(table_name, [schema])
Пример
Давайте создадим таблицу с индексом и получим
информацию о нем через метод get_indexes:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Index
from sqlalchemy import inspect
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('status', String)
)
Index('ix_articles_title', articles.c.title)
metadata.create_all(engine)
inspector = inspect(engine)
res = inspector.get_indexes('articles')
print(res)
Результат выполнения кода:
[{'name': 'ix_articles_title', 'column_names': ['title'], 'unique': False, 'dialect_options': {}}]
Пример
Давайте создадим уникальный индекс и посмотрим
на значение ключа unique в результате:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Index
from sqlalchemy import inspect
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('num', Integer)
)
Index('ix_articles_num', articles.c.num, unique=True)
metadata.create_all(engine)
inspector = inspect(engine)
res = inspector.get_indexes('articles')
print(res)
Результат выполнения кода:
[{'name': 'ix_articles_num', 'column_names': ['num'], 'unique': True, 'dialect_options': {}}]
Пример
Давайте создадим составной индекс по двум колонкам и получим список колонок индекса:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Index
from sqlalchemy import inspect
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('status', String)
)
Index('ix_articles_title_status', articles.c.title, articles.c.status)
metadata.create_all(engine)
inspector = inspect(engine)
res = inspector.get_indexes('articles')
print(res)
Результат выполнения кода:
[{'name': 'ix_articles_title_status', 'column_names': ['title', 'status'], 'unique': False, 'dialect_options': {}}]
Смотрите также
-
класс
Inspector,
который предоставляет доступ к метаданным базы данных -
метод
has_index,
который проверяет наличие индекса в таблице -
метод
get_columns,
который возвращает информацию о колонках таблицы -
метод
get_pk_constraint,
который возвращает информацию о первичном ключе