РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
649 of 711 menu

Метод has_index

Метод has_index класса Inspector проверяет, существует ли индекс с указанным именем в заданной таблице базы данных. Первым параметром метод принимает имя таблицы, вторым - имя индекса. Дополнительно можно передать схему через параметр schema. Метод возвращает True, если индекс найден, и False в противном случае.

Синтаксис

Inspector.has_index(table_name, index_name, [schema])

Пример

Давайте создадим таблицу с индексом и проверим его наличие через метод has_index:

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('text', String) ) idx = Index('idx_articles_title', articles.c.title) metadata.create_all(engine) inspector = inspect(engine) res = inspector.has_index('articles', 'idx_articles_title') print(res)

Результат выполнения кода:

True

Пример

Давайте проверим наличие несуществующего индекса в таблице:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String from sqlalchemy import inspect engine = create_engine('sqlite:///:memory:') metadata = MetaData() articles = Table( 'articles', metadata, Column('id', Integer, primary_key=True), Column('title', String) ) metadata.create_all(engine) inspector = inspect(engine) res = inspector.has_index('articles', 'idx_missing') print(res)

Результат выполнения кода:

False

Пример

Давайте переберём все индексы таблицы и проверим каждый через has_index:

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('idx_articles_title', articles.c.title) Index('idx_articles_status', articles.c.status) metadata.create_all(engine) inspector = inspect(engine) for idx_info in inspector.get_indexes('articles'): name = idx_info['name'] res = inspector.has_index('articles', name) print(name, res)

Результат выполнения кода:

idx_articles_status True idx_articles_title True

Смотрите также

  • класс Inspector,
    который предоставляет доступ к метаданным базы
  • метод get_indexes,
    который возвращает список всех индексов таблицы
  • метод has_table,
    который проверяет наличие таблицы в базе
  • метод has_schema,
    который проверяет наличие схемы в базе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить