Sepertinya sqlalchemy.migrate tidak memiliki dukungan untuk merender kueri yang valid jika terjadi perubahan dari tipe kolom String ke Integer untuk postgresql.
Dalam kasus Anda, saya akan menerapkannya sebagai eksekusi kueri langsung dan melanjutkan.
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')
Migrasi BTW dari String ke Integer mungkin gagal karena alasan yang berbeda - ketika nilai kolom berisi beberapa nilai yang tidak dapat dikonversi ke angka. Jadi saya akan menambahkan beberapa validasi ekstra ke dalam logika aplikasi untuk menjaga kemungkinan migrasi downgrade nanti.