Атрибут indexes класса Table
Атрибут indexes класса Table возвращает
коллекцию объектов Index, которые определены
для данной таблицы. Индексы ускоряют поиск и выборку
данных по определенным столбцам. Атрибут доступен
только для чтения и автоматически обновляется при
добавлении новых индексов через метод append_constraint
или при определении индексов в момент создания таблицы.
Синтаксис
table.indexes
Пример
Давайте создадим таблицу с индексом и посмотрим
на содержимое атрибута indexes:
from sqlalchemy import Table, Column, Integer, String, MetaData, Index
metadata = MetaData()
articles = Table(
'articles',
metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('status', String)
)
idx = Index('ix_articles_title', articles.c.title)
print(articles.indexes)
Результат выполнения кода:
{Index('ix_articles_title', Column('title', String(), table=<articles>))}
Пример
Давайте переберем все индексы таблицы и выведем их имена и столбцы:
from sqlalchemy import Table, Column, Integer, String, MetaData, Index
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)
Index('ix_articles_status', articles.c.status)
for index in articles.indexes:
print(index.name, [col.name for col in index.columns])
Результат выполнения кода:
"ix_articles_title ['title']"
"ix_articles_status ['status']"
Пример
Давайте создадим составной индекс по нескольким
столбцам и проверим его наличие в атрибуте indexes:
from sqlalchemy import Table, Column, Integer, String, MetaData, Index
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)
print(len(articles.indexes))
for index in articles.indexes:
print(index.name)
Результат выполнения кода:
"1"
"ix_articles_title_status"
Смотрите также
-
класс
Table,
который представляет таблицу базы данных -
атрибут
constraints,
который хранит все ограничения таблицы -
атрибут
columns,
который содержит коллекцию столбцов таблицы -
метод
append_constraint,
который добавляет ограничение или индекс в таблицу