Índices são simples de criar. Para coluna única com
index=True
parâmetro como abaixo:customer_code = Column(Unicode(15),unique=True,index=True)
Mas se você quiser mais controle sobre o nome e as opções, use a construção Index() explícita:
Index('customers_search_vector_indx', Customer.__table__.c.search_vector, postgresql_using='gin')
Acionadores podem ser criados também, mas eles ainda precisam ser
SQL
-baseado e ligado ao DDL
eventos. Consulte Personalizando DDL para obter mais informações, mas o código pode ser semelhante a este:from sqlalchemy import event, DDL
trig_ddl = DDL("""
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);
""")
tbl = Customer.__table__
event.listen(tbl, 'after_create', trig_ddl.execute_if(dialect='postgresql'))
Sidenote:não sei como configurar
tsvector
tipo de dados:merece uma pergunta separada.