Het lijkt erop dat sqlalchemy.migrate geen ondersteuning biedt voor het weergeven van geldige query's in het geval van wijziging van kolomtypen String naar Integer voor postgresql.
In jouw geval zou ik het implementeren als een directe query-uitvoering en verder gaan.
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 migreren van String naar Integer kan om verschillende redenen mislukken - wanneer de kolomwaarde een waarde zou bevatten die niet naar een getal kan worden geconverteerd. Dus ik zou wat extra validatie toevoegen aan de applicatielogica om downgrademigratie later mogelijk te houden.