Hacer que el Alambique detecte cambios en el tipo de columna y cambie la longitud de los campos de las cadenas.
La detección automática no detecta los cambios de tipo de columna de forma predeterminada. Debe activarlo editando el archivo alembic/env.py.
Por defecto Alambique no cambia la longitud de los campos de cadena, lo he notado después de cambiar un campo de cadena de:
description = Column(String(150), server_default='')
a:
description = Column(String(250), server_default='')
No se hicieron cambios.
Parece que la detección de cambios en el tipo de columna está desactivada de forma predeterminada, por lo que puede probarla primero, y puede activarse añadiendo 'compare_type=True' al contexto.
Edite el archivo alembic/env.py y añada 'compare_type=True' en dos lugares:
def run_migrations_offline():
...
context.configure(
url=url, target_metadata=target_metadata, literal_binds=True,
compare_type=True # <--- here
)
...
def run_migrations_online():
...
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
compare_type=True # <--- here
)
...
Ahora los cambios de tipo de columna se detectarán y migrarán correctamente.
Enlaces / créditos
Alembic - migration for String length change
https://eshlox.net/2017/08/06/alembic-migration-for-string-length-change
Auto Generating Migrations
https://alembic.sqlalchemy.org/en/latest/autogenerate.html#what-does-autogenerate-detect-and-what-does-it-not-detect
Leer más
Alembic SQLAlchemy
Recientes
- Cómo ocultar las claves primarias de la base de datos UUID de su aplicación web
- Don't Repeat Yourself (DRY) con Jinja2
- SQLAlchemy, PostgreSQL, número máximo de filas por user
- Mostrar los valores en filtros dinámicos SQLAlchemy
- Transferencia de datos segura con cifrado de Public Key y pyNaCl
- rqlite: una alternativa de alta disponibilidad y dist distribuida SQLite
Más vistos
- Usando Python's pyOpenSSL para verificar los certificados SSL descargados de un host
- Usando UUIDs en lugar de Integer Autoincrement Primary Keys con SQLAlchemy y MariaDb
- Conectarse a un servicio en un host Docker desde un contenedor Docker
- Usando PyInstaller y Cython para crear un ejecutable de Python
- SQLAlchemy: Uso de Cascade Deletes para eliminar objetos relacionados
- Flask RESTful API validación de parámetros de solicitud con esquemas Marshmallow