sql >> Database teknologi >  >> RDS >> PostgreSQL

SQLAlchemy deklarativ:definere triggere og indekser (Postgres 9)

Indikationer er ligetil at skabe. Til enkeltkolonne med index=True parameter som nedenfor:

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

Men hvis du vil have mere kontrol over navnet og mulighederne, så brug den eksplicitte Index()-konstruktion:

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

Udløsere kan også oprettes, men de skal stadig være SQL -baseret og koblet til DDL begivenheder. Se Tilpasning af DDL for mere information, men koden ligner muligvis denne:

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:Jeg ved ikke, hvordan jeg konfigurerer tsvector datatype:fortjener et separat spørgsmål.




  1. Masseindlæsningsdatakonverteringsfejl (type uoverensstemmelse eller ugyldigt tegn for den angivne tegntabel) for række 1, kolonne 4 (år)

  2. sql server vælg første række fra en gruppe

  3. Er substr eller LIKE hurtigere i Oracle?

  4. Oracle instantclient DYLD_LIBRARY_PATH fejl