sql >> Database >  >> RDS >> PostgreSQL

SQLAlchemy declaratief:triggers en indexen definiëren (Postgres 9)

Indicaties zijn eenvoudig te maken. Voor één kolom met index=True parameter zoals hieronder:

customer_code = Column(Unicode(15),unique=True,index=True)

Maar als je meer controle wilt over de naam en opties, gebruik dan de expliciete Index() constructie:

Index('customers_search_vector_indx', Customer.__table__.c.search_vector, postgresql_using='gin')

Triggers kunnen ook worden gemaakt, maar die moeten nog steeds SQL zijn -gebaseerd en verslaafd aan de DDL evenementen. Zie DDL aanpassen voor meer informatie, maar de code kan er ongeveer zo uitzien:

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:ik weet niet hoe ik tsvector moet configureren datatype:verdient een aparte vraag.




  1. De FGCB_ADD_REMOVE-vergrendeling

  2. Ga naar testgestuurde databaseontwikkeling (TDDD)

  3. Hoe de primaire sleutel van Django te vervangen door een ander geheel getal dat uniek is voor die tabel?

  4. jQuery Valideer het gebruik van de externe methode om te controleren of de gebruikersnaam al bestaat