PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để lấy alembic để phát DDL tùy chỉnh trên after_create?

Các sự kiện before_create / after_create ở cấp bảng được phát ra (chỉ không phải là những sự kiện cấp siêu dữ liệu). bạn cần đảm bảo rằng bất kỳ điều gì xảy ra trong tập lệnh env.py của bạn cuối cùng đều liên quan đến việc thiết lập các trình xử lý sự kiện đó.

Mã bạn có ở đây có vẻ hơi đáng ngờ:

event.listen(Session.__table__, 'after_create', update_function)
event.listen(Session.__table__, 'after_create', update_trigger)

Session.__table__ đây sẽ chỉ là một Table duy nhất và đó có thể không phải là những gì bạn thấy trong tập lệnh alembic. create_table alembic lệnh tạo một Table cục bộ và chỉ chạy một tạo trên đó, vì vậy bạn cần phải lắng nghe tất cả các đối tượng Bảng trên toàn cầu:

from sqlalchemy import Table
event.listen(Table, 'after_create', update_function)
event.listen(Table, 'after_create', update_trigger)

nếu các sự kiện này chỉ dành cho một bảng cụ thể này, thì bạn sẽ không sử dụng bất kỳ sự kiện nào, bạn chỉ cần đặt DDL () cho các trình kích hoạt đó trực tiếp trong tập lệnh di chuyển của mình, ngay sau nơi nó gọi create_table() .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột trùng lặp sau khi chuyển từ loại dữ liệu nối tiếp sang danh tính trong PostgreSQL / pgAdmin4

  2. Gọi một hàm do người dùng xác định nằm trong postgres.c trong postgreSQL bằng cách sử dụng GUI được xác định bởi netbeans

  3. Làm thế nào để viết thường mảng postgresql?

  4. Loại dữ liệu nào để chọn json hoặc jsonb hoặc văn bản

  5. pg Admin 4 - mật khẩu cho người dùng postgres khi cố gắng kết nối với máy chủ PostgreSQL 13