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

Атрибут index класса Column

Атрибут index класса Column указывает, нужно ли создавать индекс для данного столбца. Принимает булево значение: True создает обычный индекс, False (значение по умолчанию) не создает индекс. Также можно передать строку, которая задаст имя индекса.

Синтаксис

Column(..., index=True) Column(..., index=False) Column(..., index='custom_index_name')

Пример

Давайте создадим таблицу с индексом на столбце title и выведем список индексов:

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import DeclarativeBase class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Column = Column(Integer, primary_key=True) title: Column = Column(String, index=True) text: Column = Column(String) engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) for idx in Article.__table__.indexes: print(idx.name)

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

"ix_articles_title"

Пример

Давайте зададим собственное имя индекса через строку:

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import DeclarativeBase class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Column = Column(Integer, primary_key=True) title: Column = Column(String, index='my_title_index') engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) for idx in Article.__table__.indexes: print(idx.name)

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

"my_title_index"

Пример

Давайте посмотрим SQL-запрос, который создает индекс для столбца:

from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import DeclarativeBase from sqlalchemy.schema import CreateIndex class Base(DeclarativeBase): pass class Article(Base): __tablename__ = 'articles' id: Column = Column(Integer, primary_key=True) title: Column = Column(String, index=True) engine = create_engine('sqlite:///:memory:') for idx in Article.__table__.indexes: print(CreateIndex(idx).compile(engine))

Итоговый SQL запрос:

CREATE INDEX ix_articles_title ON articles (title)

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

  • класс Column,
    который представляет столбец таблицы
  • атрибут unique,
    который создает уникальное ограничение
  • атрибут primary_key,
    который делает столбец первичным ключом
  • атрибут name,
    который задает имя столбца в базе данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить