Метод drop класса Index
Метод drop класса Index удаляет индекс
из базы данных. Метод принимает необязательный параметр
bind, который указывает движок или соединение
для выполнения операции. Если параметр не указан,
используется привязка, связанная с таблицей или метаданными.
Синтаксис
Index.drop(bind=None)
Пример
Давайте создадим индекс для таблицы articles
и затем удалим его методом drop:
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)
)
index = Index('ix_articles_title', articles.c.title)
metadata.create_all(engine)
print(index.exists(engine))
index.drop(engine)
print(index.exists(engine))
Результат выполнения кода:
True
False
Пример
Давайте удалим индекс, используя параметр bind
с объектом соединения:
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)
)
index = Index('ix_articles_status', articles.c.status)
metadata.create_all(engine)
with engine.connect() as conn:
print(index.exists(conn))
index.drop(bind=conn)
print(index.exists(conn))
Результат выполнения кода:
True
False
Пример
Давайте посмотрим SQL-запрос, который выполняет
метод drop при удалении индекса:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Index
from sqlalchemy.schema import DropIndex
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)
)
index = Index('ix_articles_num', articles.c.num)
print(DropIndex(index).compile(engine))
Итоговый SQL запрос:
DROP INDEX ix_articles_num