24 votos

¿Cuál es la mejor manera de migrar los datos en django

Después de hacer algunos cambios en mis modelos (por ejemplo. nuevo campo en un modelo y un nuevo modelo) ¿cuál es la mejor manera de reflejar estos cambios en mi poblado de la base de datos?


PS: yo quería ver muchas de las soluciones en un solo lugar nominal. Al parecer, más soluciones ya están mencionados aquí.

21voto

shacker Puntos 3348

Otra técnica es el uso de la dumpdata y loaddata argumentos para manage.py, matando a su base de datos en-entre:

  1. python manage.py dumpdata > dump.json
  2. Con una herramienta externa, la caída de cualquier tablas afectadas, o matar a toda la base de datos
  3. python manage.py loaddata dump.json

Ver manage.py docs para más.

16voto

Farinha Puntos 5518

Le he pedido a una pregunta similar aquí y tengo unos cuantos respuestas.

Hay un montón de maneras de hacerlo, como manualmente haciendo el vertido y carga con SQL, uso de accesorios o utilizando uno de los "emergentes" esquema de la evolución de los paquetes de Django:

3voto

S.Lott Puntos 207588

Depende el alcance de los cambios. Si está más allá de un ALTER, que está haciendo una cirugía mayor. Hacer copias de seguridad de la modelo así como de la base de datos para que usted pueda volver.

Mi preferencia es para poner el nuevo (revisado, corregido, ampliado) en el modelo de como una NUEVA solicitud. No se han URL ni nada, sólo un modelo.

  1. La creación del nuevo modelo como una nueva solicitud. Crear pruebas, sólo para estar seguro de que funciona.
  2. syncdb para construir esta aplicación transitoria del nuevo modelo.
  3. Escribir un poco de tiempo de utilidad para la consulta de su modelo anterior, y la carga de su nuevo modelo. Es posible que desee probar esto en pura SQL. Yo prefiero escribir una simple consulta, crear y guardar bucle.
  4. Después de que el nuevo modelo está cargado, se puede volcar esta a un archivo JSON.

Una vez que hayas sacado los datos de su antiguo modelo, usted puede reconstruir su DB en el preferido nuevo formato.

  1. Mover el nuevo modelo en su aplicación existente.
  2. Soltar las versiones antiguas de la aplicación de las tablas.
  3. syncdb para construir las nuevas tablas.
  4. Carga el archivo JSON con los datos.

2voto

fijter Puntos 7671

Mirar con manage.py sqlall lo que los parámetros son para las nuevas columnas y agregarlos manualmente en su base de datos con las instrucciones Alter table. De esta manera usted no tiene que rehacer su base de datos; Se requiere un cierto conocimiento de SQL, aunque...

Echa un vistazo aquí (Desplácese hacia abajo para "Hacer Cambios a un Esquema de Base de datos")

0voto

Perform these steps in order may help you:

For more details,

clickea aquí: http://south.readthedocs.org/en/latest/

1) python manage.py schemamigration apps.appname --initial

Paso anterior crea la migración de la carpeta por defecto.

2) python manage.py migrate apps.appname --fake

genera un falso migración.

3) python manage.py schemamigration apps.appname --auto

A continuación, puede añadir los campos como desee y realizar el comando de arriba.

4) python manage.py migrate apps.appname

A continuación, migrar los archivos a la base de datos.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X