기본적으로 python manage.py loaddata /file/to/insert 로 json 데이터 읽어드리는 기능 있음
제한점: Django 에서 export 하는 JSON 파일 형태만 인식
e.g. "model" key가 JSON element마다 있어야 함
해결 방안:
python manage.py shell에서 직접 데이터 찾아 넣기
from myapp.models import MyModel
import json
with open('/path/to/my/data.json') as f:
data = json.load(f)
for entry in data:
obj = MyModel(field1=entry['field1'], field2=entry['field2'], ...)
obj.save()
- 일회성으로 주기적으로 저장된 JSON 데이터 불러들리기 적합하지 않음
- c.f. 각 element 마다 `obj.save()` 하기 보다 `bulk_create()` 사용하면 한번에 DB로 데이터 넣기 가능.
2. `command`를 직접 만들기
```python
from django.core.management.base import BaseCommand
from myapp.models import MyModel
import json
class Command(BaseCommand):
def handle(self, *args, **options):
with open('/path/to/my/data.json') as f:
data = json.load(f)
for entry in data:
obj = MyModel.objects.get(pk=entry['id'])
obj.field1 = entry['field1']
obj.field2 = entry['field2']
...
obj.save()
python manage.py loaddata /file/to/insert
로 json 데이터 읽어드리는 기능 있음해결 방안:
python manage.py shell
에서 직접 데이터 찾아 넣기with open('/path/to/my/data.json') as f: data = json.load(f) for entry in data: obj = MyModel(field1=entry['field1'], field2=entry['field2'], ...) obj.save()