단일 모델에 대한 장고 덤프 데이터?


144

나는을 수행 할 수 있습니다 dumpdata에서 장고 가 아니라 전체 응용 프로그램보다, 단 하나의 모델에, 만일 그렇다면, 어떻게?

앱의 경우 다음과 같습니다.

python manage.py dumpdata myapp

그러나 "myapp.mymodel"과 같은 특정 모델을 덤프하고 싶습니다. 그 이유는 동일한 응용 프로그램에서 덤프하고 싶지 않은 거대한 3 백만 개의 레코드와 데이터 세트가 있다는 것입니다.


1
귀하의 질문을 이해하기 쉽지 않습니다. SQL 덤프를 데이터베이스에로드 하시겠습니까? 아니면 어떤 종류의 toString () 및 모델 인스턴스를 원하십니까?
레너드 Ehrenfried

답변:


245

버전 1.1 이상에서 Django dumpdata관리 명령을 사용하면 개별 테이블에서 데이터를 덤프 할 수 있습니다.

./manage.py dumpdata myapp1 myapp2.my_model

명령 줄에서 여러 앱과 모델을 분리 할 수도 있습니다. 표준 정의는 다음과 같습니다.

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]

17
gath는 거의 2 세인 게시물에 대한 부정적인 투표를 이해하지 못했습니다. 또한 위의 코드는 v1.1에서도 잘 작동했습니다. 새로운 릴리스의 새로운 기능은 이전 답변이 유효하지 않습니다.
simplyharsh

1
그리고 앱의 다른 인스턴스에서이 데이터를 어떻게 추가합니까?
aguilarpgc

1
사람이 읽을 수있는 JSON 사용 플래그를 만들려면 --indent 4dumpdata
발레리 Ramusik

103

언급했듯이 Django 1.0의 manage.py 명령을 통해이 작업을 수행 할 수 없습니다. 그러나 스크립트를 사용하여 JSON 파일을 내보내고 다음을 사용하여로드 할 수 있습니다 loaddata.

from django.core import serializers
from myproject.myapp import models
data = serializers.serialize("json", models.MyModel.objects.all())
out = open("mymodel.json", "w")
out.write(data)
out.close()

4
원하는 경우 더 세밀하게 얻을 수 있기 때문에 이것은 훌륭한 스크립트입니다. 위의 세 번째 줄에서 .filter (...)를 수행하면 원하는 특정 레코드 만 덤프 할 수 있습니다.
Gringo Suave

1
좋은! 이 방법으로 확실히 더 세밀하게 제어 할 수 있습니다.
Luis Artola

9

django 모델에서 모든 데이터를 json 형식으로 가져옵니다.

통사론:

python manage.py dumpdata app_name.model_name

예를 들어 django의 기본 인증 앱에있는 group_permission 모델에서 데이터를 덤프합니다.

python manage.py dumpdata auth.group_permission

출력은 콘솔을 살펴보십시오 .


6

나는 당신이 당신의 질문에 해결책을 가지고 있다고 생각합니다. 다음과 같이 개별 모델을 덤프 할 수 있습니다.

./manage.py dumpdata myapp.my_model

게시하기 전에 시도했습니다. 운이 없었다. 장고 1.0에 있습니다. 또한 myapp.models.mymodel을 사용해 보셨습니까?
nategood

4

성공하려면 두 번 말하고 다음과 같이 모델을 두 번 지정해야했습니다.

./manage.py dumpdata myapp2.my_model myapp2.my_model

내가 말만하면

./manage.py dumpdata myapp2 myapp2.my_model

my_model을 지정 했음에도 불구하고 myapp2의 모든 모델로 넘쳤습니다.


1

이 문제를 해결하려면 다른 앱을 만들고 모델을 복사하되 db_table 메타 옵션을 사용하여 기존 테이블을 가리 키십시오. 그런 다음 복사 한 모델을 새 앱에 덤프 할 수 있습니다. 기존 앱은 영향을받지 않습니다.



1

특정 파일에 쓰려면 :

python manage.py dumpdata app_label.ModelName app_label.ModelName2 > fixtures/specic.json
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.