Как создать индекс pg_trgm, используя SQLAlchemy для Scrapy?

Я использую Scrapy для очистки данных с веб-форума. Я храню эти данные в базе данных PostgreSQL, используя SQLAlchemy. Таблица и столбцы создаются нормально, однако я не могу заставить SQLAlchemy создать индекс для одного из столбцов. Я пытаюсь создать индекс триграммы (pg_trgm), используя джин.

Код Postgresql, который будет создавать этот индекс:

CREATE INDEX description_idx ON table USING gin (description gin_trgm_ops);

Код SQLAlchemy, который я добавил в мой файл models.py:

desc_idx = Index('description_idx', text("description gin_trgm_ops"), postgresql_using='gin')

Я добавил эту строку в мой models.py, но когда я проверял postgresql, индекс так и не был создан.

Ниже приведены мои полные файлы models.py и pipelines.py. Я собираюсь об этом все неправильно?

Любая помощь будет принята с благодарностью!

models.py:
from sqlalchemy import create_engine, Column, Integer, String, DateTime, Index, text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.engine.url import URL
import settings

DeclarativeBase = declarative_base()
def db_connect():
return create_engine(URL(**settings.DATABASE))

def create_forum_table(engine):
    DeclarativeBase.metadata.create_all(engine)    


class forumDB(DeclarativeBase):
    __tablename__ = "table"

    id = Column(Integer, primary_key=True)
    title = Column('title', String)
    desc = Column('description', String, nullable=True)
    desc_idx = Index('description_idx', text("description gin_trgm_ops"), postgresql_using='gin')
pipelines.py
from scrapy.exceptions import DropItem
from sqlalchemy.orm import sessionmaker
from models import forumDB, db_connect, create_forum_table


class ScrapeforumToDB(object):
def __init__(self):
    engine = db_connect()
    create_forum_table(engine)
    self.Session = sessionmaker(bind=engine)

def process_item(self, item, spider):
    session = self.Session()
    forumitem = forumDB(**item)

    try:
        session.add(forumitem)
        session.commit()
    except:
        session.rollback()
        raise
    finally:
        session.close()

    return item

Ответы на вопрос(2)

Ваш ответ на вопрос