Có vẻ như sqlalchemy.migrate không hỗ trợ hiển thị truy vấn hợp lệ trong trường hợp thay đổi từ loại cột Chuỗi thành Số nguyên cho postgresql.
Trong trường hợp của bạn, tôi sẽ triển khai nó dưới dạng thực thi truy vấn trực tiếp và tiếp tục.
def downgrade(migrate_engine):
# ALTER TABLE courses ALTER COLUMN number SET DATA TYPE integer;
migrate_engine.execute('ALTER TABLE courses ALTER COLUMN number TYPE INTEGER USING number::numeric')
BTW di chuyển từ Chuỗi sang Số nguyên có thể không thành công vì các lý do khác nhau - khi giá trị cột sẽ chứa một số giá trị không thể chuyển đổi thành số. Vì vậy, tôi sẽ thêm một số xác thực bổ sung vào logic ứng dụng để giữ cho việc di chuyển hạ cấp có thể xảy ra sau này.