tutorial script python migration sqlalchemy data-migration sqlalchemy-migrate

python - script - ¿Vale la pena usar sqlalchemy-migrate?



flask sqlalchemy tutorial (3)

Alambic está fuera ( http://pypi.python.org/pypi/alembic ) y mantenido por SQLAlchemy autor y dado el hecho de que el desarrollo sqlalchemy-migrate parece estancado, prácticamente sin compromisos este año ( http://code.google.com/p/sqlalchemy-migrate/source/list ), creo que ya no vale la pena usarlo, cambiaré mi proyecto actual a Alambic.

Si todavía se mantuviera en gran medida, estaría seguro de la capacidad del proyecto para mantener sincronizado con SQLAlchemy (que era el caso antes).

Tengo una aplicación web que usa sqlalchemy (dentro de Pylons). Necesito cambiar el esquema de manera eficiente para poder cambiar la versión de producción al menos a diario, tal vez más, sin perder los datos.

He jugado un poco con sqlalchemy-migrate durante el fin de semana y diría que me causó una mala impresión. Primero , creo que no puede ayudar con la migración entre dos motores de bases de datos ; eso es algo que probablemente podría hacerse solo con sqlalchemy. En segundo lugar, los documentos no parecen actualizados. Tuve que cambiar algunas opciones de línea de comandos, como dar la ruta del repositorio en cada comando, esto podría ser un error de migración.

Pero lo peor es el comando "manage.py test ". No solo modifica la base de datos (este punto está claramente indicado en la documentación, así que no puedo culpar a la migración), pero mi primer script de migración acaba de hacer una simple y estúpida migración de esquema, dejando el db actualizado con un esquema diferente al original . Pero la "prueba manage.py" acaba de responder algo así como

success !

Es decir, ni siquiera verificó si el esquema se dejó en un estado coherente. Entonces , ¿vale la pena usar migrate? ¿Hay alguna ventaja en comparación con el método Do It Yourself asociado con las buenas prácticas propuestas por S.Lott ? ¿Existen alternativas a sqlalchemy-migrate que realmente simplifiquen el proceso de migración o simplemente estoy tratando de usar migrar con un a priori malo (entonces muéstrenme por qué no es claramente superior a crear columnas CSV como se propone en el enlace anterior)?

¡Muchas gracias!


Personalmente me encanta usarlo. Es increíble porque las nuevas instalaciones (dev, test, prod) se pueden iniciar fácilmente. No solo eso, sino que proporciona un hogar para la aplicación a medida que crece y proporciona buenos puntos de entrada para aquellas migraciones que deben tener lugar a medida que se mueve de una versión a otra de la aplicación. Algo necesita realizar el alter / etc en los servidores de desarrollo, pruebas y producción.

¿Es perfecto? Nop. Puede dejar su db en mal estado, pero es por eso que tiene versiones de desarrollo / prueba / producción de cosas.

Personalmente, lo utilizo para arrancar mis pruebas unitarias en torres usando un sqlite db para ejecutar pruebas unitarias, pero usamos mysql en producción. Así que hay algunos beneficios de la plataforma cross db de usarlo.


Use Alambique en su lugar:

http://pypi.python.org/pypi/alembic

Gracias por los comentarios, editados para agregar un poco de razonamiento -

Fue desarrollado por el autor de SQLAlchemy, y es completamente nuevo y está bien respaldado. No sé lo suficiente sobre sqlalchemy-migrate para dar una buena comparación. Pero hice una lectura rápida de los claros y concisos documentos Alambique, y luego obtuve mi propia migración generada automáticamente en muy poco tiempo.

Autogeneración: no es su único modo de operación, pero si lo elige, Alembic leerá la configuración sqlalchemy de su aplicación (por ejemplo, sus clases de modelo declarativo que configuran todas sus tablas, restricciones y mapeos) y comparará con el estado actual de su base de datos y genera un script de Python que representa el delta entre los dos. A continuación, pasa esa secuencia de comandos al comando de actualización de Alembic y ahí lo tienes, las diferencias se resuelven. Normalmente se necesita una pequeña cantidad de edición de la secuencia de comandos de migración, y eso es (a) solo la naturaleza de las migraciones, y (b) algo que quiera hacer de todos modos para asegurarse de estar completamente al tanto de los pasos exactos de la migración. va a funcionar antes de ejecutarlo.

Alembic ofrece una capacidad similar a DVCS en la forma en que se rastrean sus migraciones. Hace que sea realmente fácil volver a cualquier estado pasado de su esquema db.