как через sqlalchemy добавить индекс на 2 поля в таблице?
допустим есть класс Phrase:
import sqlalchemy as sa
from sqlalchemy.orm import declarative_base
Base = declarative_base()
lass Phrase(Base):
__tablename__ = 'phrases'
en_phrase = sa.Column(sa.Text)
ru_phrase = sa.Column(sa.Text)
def __init__(self, en, ru):
self.en_phrase = en
self.ru_phrase = ru
Нужно сделать один индекс на 2 поля: en_phrase и ru_phrase, можно ли как-то сделать его силами sqlalchemy?
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
нашел решение:
from sqlalchemy import Index
index = Index('index__phrase__en_phrases__ru_phrases', Phrase.en_phrase, Phrase.ru_phrase)
index.create(bind=db)
# выведет: Index('index__en_phrases__ru_phrases', Column('en_phrase', Text(), table=<phrases>), Column('ru_phrase', Text(), table=<phrases>))
еще одно решение - при создании таблицы сразу указать
class Other(Base):
__tablename__ = 'other'
id = sa.Column(sa.Integer, primary_key=True)
f_one = sa.Column(sa.Text)
f_two = sa.Column(sa.Text)
f_three = sa.Column(sa.Text)
idx_one_two = sa.Index('idx_one_two', f_one, f_two)
def __init__(self, one, two, three):
self.one = one
self.two = two
self.three = three