Det verkar som att sqlalchemy.migrate inte har stöd för att rendera en giltig fråga vid ändring av kolumntyperna String till Integer för postgresql.
I ditt fall skulle jag implementera det som en direkt sökning och gå vidare.
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 från sträng till heltal kan misslyckas av olika anledningar - när kolumnvärdet skulle innehålla något värde som inte kan konverteras till nummer. Så jag skulle lägga till lite extra validering i applikationslogiken för att möjliggöra nedgraderingsmigrering senare.