PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Deklaratywny SQLAlchemy:definiowanie wyzwalaczy i indeksów (Postgres 9)

Indeksy są proste do stworzenia. Dla pojedynczej kolumny z index=True parametr jak poniżej:

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

Ale jeśli chcesz mieć większą kontrolę nad nazwą i opcjami, użyj jawnej konstrukcji Index():

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

Wyzwalacze można również utworzyć, ale nadal muszą to być SQL oparte i podpięte do DDL wydarzenia. Zobacz Dostosowywanie DDL, aby uzyskać więcej informacji, ale kod może wyglądać podobnie do tego:

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'))

Przypis:nie wiem, jak skonfigurować tsvector typ danych:zasługuje na osobne pytanie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapobieganie sąsiednim/nakładającym się wpisom za pomocą EXCLUDE w PostgreSQL

  2. Dlaczego wartości NULL są na pierwszym miejscu przy zamawianiu DESC w zapytaniu PostgreSQL?

  3. Jak działa funkcja to_number() w PostgreSQL

  4. Operator nie istnieje:json =json

  5. PostgreSQL:liczenie wierszy dla zapytania "po minucie"