PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come modificare il tipo di colonna da carattere variabile a intero usando sqlalchemy-migrate

Sembra che sqlalchemy.migrate non abbia il supporto per il rendering di query valide in caso di modifica dei tipi di colonna da Stringa a Integer per postgresql.

Nel tuo caso lo implementerei come esecuzione di query diretta e andrei avanti.

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')

A proposito, la migrazione da String a Integer potrebbe non riuscire per diversi motivi, quando il valore della colonna conterrebbe un valore che non può essere convertito in numero. Quindi aggiungerei un po' di convalida in più nella logica dell'applicazione per mantenere la migrazione del downgrade possibile in un secondo momento.