Indices sont simples à créer. Pour une seule colonne avec index=True
paramètre comme ci-dessous :
customer_code = Column(Unicode(15),unique=True,index=True)
Mais si vous voulez plus de contrôle sur le nom et les options, utilisez la construction Index() explicite :
Index('customers_search_vector_indx', Customer.__table__.c.search_vector, postgresql_using='gin')
Déclencheurs peuvent également être créés, mais ceux-ci doivent toujours être SQL
-basé et accroché au DDL
événements. Voir Personnalisation du DDL pour plus d'informations, mais le code pourrait ressembler à ceci :
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 :Je ne sais pas comment configurer tsvector
type de données :mérite une question distincte.