Det ser ud til, at sqlalchemy.migrate ikke understøtter gengivelse af gyldig forespørgsel i tilfælde af ændring fra String til Integer kolonnetyper for postgresql.
I dit tilfælde ville jeg implementere det som en direkte udførelse af forespørgsler og gå videre.
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 migrering fra streng til heltal kan mislykkes af forskellige årsager - når kolonneværdien ville indeholde en eller anden værdi, der ikke kan konverteres til tal. Så jeg ville tilføje noget ekstra validering i applikationslogikken for at holde nedgraderingsmigrering mulig senere.