Estoy programando una aplicación web usando sqlalchemy. Todo fue sencillo durante la primera fase de desarrollo cuando el sitio no estaba en producción. Podría cambiar fácilmente el esquema de la base de datos simplemente borrando la vieja base de datos sqlite y creando una nueva desde cero.¿Cómo administrar eficientemente los cambios de esquema frecuentes usando sqlalchemy?
Ahora el sitio está en producción y necesito preservar los datos, pero aún quiero mantener mi velocidad de desarrollo original convirtiendo fácilmente la base de datos al nuevo esquema.
Digamos que tengo model.py en la revisión 50 y model.py una revisión 75, que describe el esquema de la base de datos. Entre esos dos esquemas, la mayoría de los cambios son triviales, por ejemplo, una nueva columna se declara con un valor predeterminado y solo deseo agregar este valor predeterminado a los registros anteriores.
Eventualmente, algunos cambios pueden no ser triviales y requieren algunos cálculos previos.
¿Cómo maneja (o manejaría) las aplicaciones web que cambian rápidamente con, por ejemplo, una o dos versiones nuevas del código de producción por día?
Por cierto, el sitio está escrito en Pilones si esto hace alguna diferencia.
"Así es vale la pena usar migrate? " debería ser una pregunta separada. Usted tiene una respuesta sobre cómo migrar. Preguntar acerca de los casos de uso para sqlalchemy-migrate y su caso de uso específico es más específico que esta pregunta general. –
OK, así que necesito hacer otra pregunta sobre la migración para saber qué respuesta aceptar. – ascobol
@ascobol: "otra pregunta sobre migrar para saber qué respuesta aceptar". Falso. Tienes respuestas aquí. "¿Valora la herramienta [X]?" no está relacionado con "¿cómo migro?". Usted tiene respuestas a "¿cómo?". Preguntar sobre el valor de una herramienta en particular no está relacionado con "¿cómo?" –