sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo modificar el tipo de columna de un carácter que varía a un número entero usando sqlalchemy-migrate

Parece que sqlalchemy.migrate no es compatible con la representación de consultas válidas en caso de modificar los tipos de columna de cadena a entero para postgresql.

En su caso, lo implementaría como una ejecución de consulta directa y seguiría adelante.

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

Por cierto, la migración de String a Integer puede fallar por diferentes razones, cuando el valor de la columna contendría algún valor que no se puede convertir en número. Por lo tanto, agregaría alguna validación adicional en la lógica de la aplicación para que la migración a una versión anterior sea posible más adelante.