¿Cómo gestionar eficientemente los cambios frecuentes de esquema usando sqlalchemy?

Estoy programando una aplicación web usando sqlalchemy. Todo fue fluido 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 eliminando la antigua base de datos sqlite y creando una nueva desde cero.

Ahora el sitio está en producción y necesito preservar los datos, pero aún quiero mantener mi velocidad de desarrollo original al convertir 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, se declara una nueva columna con un valor predeterminado y solo quiero agregar este valor predeterminado a los registros antiguos.

Eventualmente, algunos cambios pueden no ser triviales y requerir algún cálculo previo.

¿Cómo maneja (o manejaría) las aplicaciones web que cambian rápidamente con, por ejemplo, una o dos nuevas versiones del código de producción por día?

Por cierto, el sitio está escrito en Pilones si esto hace alguna diferencia.

Respuestas a la pregunta(4)

Su respuesta a la pregunta