Декларативная SQLAlchemy: определение триггеров и индексов (Postgres 9)

Есть ли способ в классе SQLAlchemy таблицы определять / создавать триггеры и индексы для этой таблицы?

Для Например, если бы у меня была простая таблица вроде ...

class Customer(DeclarativeBase):
    __tablename__ = 'customers'
    customer_id = Column(Integer, primary_key=True,autoincrement=True)
    customer_code = Column(Unicode(15),unique=True)
    customer_name = Column(Unicode(100))
    search_vector = Column(tsvector) ## *Not sure how do this yet either in sqlalchemy*.

Теперь я хочу создать триггер для обновления "search_vector"

CREATE TRIGGER customers_search_vector_update BEFORE INSERT OR UPDATE
ON customers
FOR EACH ROW EXECUTE PROCEDURE
tsvector_update_trigger(search_vector,'pg_catalog.english',customer_code,customer_name);

Затем я хотел добавить это поле также в качестве индекса ...

create index customers_search_vector_indx ON customers USING gin(search_vector);

Прямо сейчас после i выполнять любую регенерацию базы данных из моего приложения, мне нужно добавить столбец для столбца tsvector, определение триггера, а затем оператор индекса из psql. Не конец света, но шаг легко забыть. Я всецело отношусь к автоматизации, поэтому, если я смогу добиться этого во время установки приложений, тогда бонус!

23
задан plaes 22 August 2012 в 04:45
поделиться