2011-08-09 78 views
13

He desarrollado una aplicación django simple usando sqlite3. Al principio, quería simplificar el uso de sqlite3, pero las cosas están empezando a ampliarse (¡sí, en realidad comencé a usar esa aplicación con sqlite3! Es una pena para mí ...) así que quiero migrar todos mis datos a la base de datos postgresql.¿Cómo copiar la base de datos en uso a otra base de datos en django?

¿El Django u otro tercero proporcionan estas características, o debería sufrir por mi propia estupidez ...

+0

duplicado posible: http://stackoverflow.com/questions/4581727/convert-sqlite-sql-dump-file-to-postgresql –

Respuesta

2

que estoy tratando de hacer exactamente lo mismo en este momento, pero yo Estoy corriendo un problema con la resolución de dependencias básicamente lo mismo que ticket 16317. Pero lo suficiente sobre mí ...

Solución de problemas esto me llevó a encontrar un enlace para django-smuggler que le permite crear volcados y cargar datos desde la interfaz de administración.

Parece prometedor para cualquier transferencia de datos necesaria o para usar como una utilidad de copia de seguridad.

25

En primer lugar, ejecute

manage.py dumpdata > out.json 

continuación, cambiar su configuración de base de datos, migrar (o syncdb) y, finalmente,

echo "delete from auth_permission; delete from django_content_type;" | python manage.py dbshell 

(Si tiene Django mayor que 1,11, es necesario utilizar

echo "delete from django_content_type;" | manage.py dbshell 

)

a continuación, cargar el archivo JSON:

manage.py loaddata out.json 

(a partir de 2013 django_contenttype se sustituye con django_content_type)

+0

me sale un error como este: Integridad de error: duplicar valor clave viola restricción única " django_content_type_app_label_model_key " DETALLE: KEY (app_label, model) = (admin, logentry) ya existe – yasar

+1

¿Has cambiado db? Cuando vuelque sus datos, puede simplemente eliminar las tablas que tenga, actualizar el esquema, ejecutar syncdb (las tablas se recrearán) y volver a cargar los datos (recuerde que si eliminó algunas columnas del esquema, debe eliminarlas del archivo json) también). Puede ver las tablas y consultas necesarias para restablecer la aplicación, cuando ejecutó "manage.py sqlreset appname". Y también, --indent = 4 ayudará con el comando dumpdata;) –

+0

btw - http://stackoverflow.com/questions/5739880/django-update-database-schema-without-loosing-data podría ser útil. –

Cuestiones relacionadas