PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQLAlchemy декларативно:дефиниране на тригери и индекси (Postgres 9)

Показатели са лесни за създаване. За една колона с index=True параметър като по-долу:

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

Но ако искате повече контрол върху името и опциите, използвайте изричната конструкция Index():

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

Задействания могат също да бъдат създадени, но те трябва да са SQL -базиран и свързан към DDL събития. Вижте Персонализиране на DDL за повече информация, но кодът може да изглежда подобно на това:

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

Странична бележка:Не знам как да конфигурирам tsvector тип данни:заслужава отделен въпрос.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PgBouncer 1.7 – „Цветовете варират след възкресението“

  2. Конвертирайте django RawQuerySet в Queryset

  3. Извадете години от дата в PostgreSQL

  4. MySQL срещу PostgreSQL за уеб приложения

  5. Референтна стойност на серийната колона в друга колона по време на същото INSERT