Класс Index
Класс Index представляет собой индекс базы данных.
Он используется для ускорения поиска и выборки данных
из таблиц. Первым параметром передается имя индекса,
вторым - имя таблицы, к которой он применяется,
а третьим - список столбцов, по которым строится индекс.
Синтаксис
Index(name, table, columns)
Пример
Давайте создадим простой индекс для таблицы
articles по столбцу title:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Index
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
Column('status', String),
Column('num', Integer)
)
idx = Index('idx_articles_title', articles.c.title)
print(idx)
Результат выполнения кода:
"Index('idx_articles_title', articles.title)"
Пример
Давайте создадим составной индекс по двум столбцам
status и num:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Index
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
Column('status', String),
Column('num', Integer)
)
idx = Index('idx_articles_status_num', articles.c.status, articles.c.num)
print(idx)
Результат выполнения кода:
"Index('idx_articles_status_num', articles.status, articles.num)"
Пример
Давайте создадим индекс с помощью метода create
и применим его к базе данных:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Index
engine = create_engine('sqlite:///:memory:')
metadata = MetaData()
articles = Table(
'articles', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('text', String),
Column('status', String),
Column('num', Integer)
)
metadata.create_all(engine)
idx = Index('idx_articles_title', articles.c.title)
idx.create(engine)
print("Index created successfully")
Результат выполнения кода:
"Index created successfully"
Итоговый SQL запрос:
CREATE INDEX idx_articles_title ON articles (title)