setup runserver manage data python django database-design django-models

python - runserver - export data django



Django Selective Dumpdata (3)

Creo que vale la pena echarle un vistazo a django-fixture-magic .

Encontrará información de fondo adicional en Cómo depurar su base de datos Django .

¿Es posible filtrar de forma selectiva qué registros genera el comando de gestión de volcados de Django? Tengo algunos modelos, cada uno con millones de filas, y solo quiero volcar registros en un modelo que se ajuste a un criterio específico, así como a todos los registros vinculados de clave externa que hacen referencia a cualquiera de esos registros.

Considere este caso de uso. Supongamos que tengo una base de datos de producción donde mi modelo de usuario tiene millones de registros. Tengo varios otros modelos (Log, Transaction, Purchase, Bookmarks, etc.) que hacen referencia al modelo de usuario. Quiero hacer desarrollo en mi aplicación Django, y quiero probar usando datos realistas. Sin embargo, mi base de datos de producción es tan enorme que no puedo tomar una instantánea de todo el asunto y cargarlo localmente. Entonces, idealmente, me gustaría utilizar dumpdata para volcar 50 registros de usuario aleatorios y todos los registros relacionados a JSON, y usarlos para llenar una base de datos de desarrollo.

¿Hay una manera fácil de lograr esto?


Esta no es una respuesta simple a mi pregunta, pero encontré algunos documentos interesantes sobre la función de teclas naturales integradas de Django, que permitiría representar registros serializados sin la clave principal. Desafortunadamente, no parece que esto esté completamente integrado en dumpdata, y hay una vieja y destacada entrada para confiar plenamente en las claves naturales.

También parece que la función serializers.serialize () permite la serialización de una lista arbitraria de instancias de modelos específicos.

Presumiblemente, si implementé un método natural_key () en todos mis modelos, y luego llamé a serializers.serialize ([Users.objects.filter (criteria)]), debería estar cerca de lograr lo que deseo. Podría tener que escribir una función para rastrear todas las referencias de FK e incluirlas en la lista de objetos pasados ​​a serializar ().


Este fragmento puede ser útil para usted (sigue las relaciones y los serializa):

http://djangosnippets.org/snippets/918/

También podría usar ese comando de administración y anular los administradores predeterminados para los modelos a los que desea devolver los conjuntos de consultas personalizados.