makemigrations database django svn

database - makemigrations - Seguimiento de versión, automatice los cambios del esquema de base de datos con django



django makemigrations (6)

Actualmente estoy mirando el framework Django de Python para futuras aplicaciones web basadas en db, así como para un puerto de algunas aplicaciones actualmente escritas en PHP. Uno de los problemas más desagradables durante mis últimos años fue hacer un seguimiento de los cambios en el esquema de la base de datos y desplegar estos cambios en los sistemas productivos. No me atreví a pedir que me permitieran deshacerlos, pero, por supuesto, para probar y eliminar errores, sería una gran característica. De otras preguntas aquí (como esta o esta ), puedo ver que no estoy solo y que este no es un problema trivial. Además, encontré muchas inspiraciones en las respuestas allí.

Ahora, como Django parece ser muy poderoso, ¿tiene alguna herramienta para ayudar con lo anterior? Tal vez es incluso en sus documentos y me lo perdí?


Hay al menos dos utilidades de terceros para gestionar las migraciones de esquema DB, South y Django Evolution . No he probado ninguna de las dos, pero he escuchado algunas cosas buenas sobre South, aunque Evolution ha durado un poco más.

Además, mira SchemaEvolution en la wiki de Django. Es solo una página wiki sobre la migración de la base de datos.


Y ahora también hay migraciones . Del anuncio :

django-evolution intenta abordar este problema de forma inteligente, detectando cambios en los modelos que aún no se reflejan en el esquema de la base de datos y averiguando qué se debe hacer para que los dos vuelvan a estar sincronizados. En contraste, dmigrations adopta el enfoque estúpido: requiere que establezca explícitamente los cambios en una secuencia de migraciones, que se aplicarán a su vez para llevar una base de datos al estado más reciente que refleje los modelos subyacentes.

Esto significa trabajo adicional para los desarrolladores que crean migraciones, pero también hace que todo el proceso sea completamente transparente: para nuestros proyectos, decidimos elegir el sistema más simple que pudiera funcionar.

(Mi negrita)



U debe buscar Dmigrations , funciona un poco diferente de django-eveoltions. Te muestra todo lo que está haciendo y, para cosas complicidas, te pide tus interpelaciones. Debe ser genial.


Hubo una sesión de panel sobre los cambios al esquema DB en el reciente DjangoCon; hay un video de la sesión (gracias a Google), que debería proporcionar información útil sobre varias de estas utilidades.


La última vez que revisé (versión 0.97), syncdb podrá agregar tablas para sincronizar su esquema DB con su archivo models.py, pero no puede:

  • Cambie el nombre o agregue una columna en una base de datos poblada. Tienes que hacer eso a mano.
  • Refactorice su modelo (como dividir una tabla en dos) y vuelva a llenar su BD en consecuencia.

Podría ser posible escribir una secuencia de comandos de Django para realizar la migración jugando con los dos administradores diferentes, pero eso podría llevar siglos si tu base de datos es grande.