Mientras mantenía un modelo de datos de SQLAlchemy y utilizaba alambique para el control de versiones, el siguiente cambio de código que hice resultó en una revisión vacía:
some_column = Column(Boolean, nullable=False, default=False)Mientras que antes era:
some_column = Column(Boolean, nullable=False) Por lo tanto, agregar un valor predeterminado no produce cambios en el alambique, es decir, genera una revisión vacía. Probé otros valores ofrecidos por SQLAlchemy como false() y expression.false() en lugar de False , pero el resultado es el mismo (revisión de alambique vacío). También probé server_default en lugar de default . La base de datos en cuestión es PostgreSQL.
Por revisión vacía, por supuesto, quiero decir que alambique no reconoce ningún cambio realizado en SQLAlchemy:
def upgrade(): # ### commands auto generated by Alembic - please adjust! ### pass # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### pass # ### end Alembic commands ###Agradezco cualquier ayuda en este sentido.
Para hacer esto automáticamente , debe activar una configuración para detectar cambios predeterminados del servidor.
En su env.py , para las llamadas context.configure (migraciones en línea y fuera de línea, en 2 lugares), agregue compare_server_default=True kwarg.
Probablemente sea más seguro simplemente colocar alter_column usted mismo y definitivamente usar server_default porque default es solo para la configuración predeterminada del lado de Python (lo cual está bien, pero parece que no es lo que desea).
La generación automática puede detectar opcionalmente:
...
Cambio de servidor por defecto. Esto ocurrirá si establece el parámetro EnvironmentContext.configure.compare_server_default en True o en una función invocable personalizada. Esta característica funciona bien para casos simples, pero no siempre produce resultados precisos.
...