Có cách nào trong lớp SQLAlchemy của bảng để xác định/tạo trình kích hoạt và chỉ mục cho bảng đó không?Tuyên bố SQLAlchemy: xác định trình kích hoạt và chỉ mục (Postgres 9)
Ví dụ nếu tôi đã có một bảng cơ bản như ...
class Customer(DeclarativeBase):
__tablename__ = 'customers'
customer_id = Column(Integer, primary_key=True,autoincrement=True)
customer_code = Column(Unicode(15),unique=True)
customer_name = Column(Unicode(100))
search_vector = Column(tsvector) ## *Not sure how do this yet either in sqlalchemy*.
bây giờ tôi muốn tạo ra một kích hoạt để cập nhật "search_vector"
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);
Sau đó, tôi muốn thêm lĩnh vực đó cũng làm chỉ mục ...
create index customers_search_vector_indx ON customers USING gin(search_vector);
Ngay bây giờ sau khi tôi thực hiện bất kỳ loại tái tạo cơ sở dữ liệu nào từ ứng dụng của tôi, tôi phải làm anh ta thêm cột cho cột tsvector, định nghĩa trigger, và sau đó là câu lệnh index từ psql. Không phải là kết thúc của thế giới nhưng nó dễ quên một bước. Tôi tất cả về tự động hóa vì vậy nếu tôi có thể nhận được tất cả điều này xảy ra trong quá trình thiết lập ứng dụng thì hãy thưởng!
Nơi bạn có thể tìm hiểu cách tạo cột tsvector? – d0ugal