Fixture
일반적으로 데이터베이스의 초기 데이터나 테스트 데이터를 쉽게 생성하고 로드할 수있게 해주는 도구이다. 데이터베이스에서 내보낸 JSON 또는 XML 형식의 데이터를 이용하여, 다른 데이터베이스에 데이터를 이전하거나, 초기 데이터를 적용하는 데 사용할 수 있다.
Dump & Load
fixture는 dumpdata와 loaddata 관리 명령을 사용하여 작업할 수 있다. dumpdata 명령은 현재 데이터베이스에서 데이터를 추출하고, loaddata 명령은 이러한 데이터를 사용하여 데이터베이스를 채워준다.
dumpdata
현재 데이터베이스에 있는 데이터들을 json형식으로 dump 떠 JSON 파일로 추출할 수 있다.
$ python manage.py dumpdata APP_NAME.MODEL_NAME --indent INT > FIXTURE_NAME.json
👉🏻 dumpdata 명령의 --indent 옵션은 출력되는 JSON 형식의 들여쓰기 수준을 설정한다. 이 옵션 사용시 파일이 보기 좋게
출력되도록 한다. 사용하지 않을 경우에는 한 줄로 출력되 읽기가 어렵고 데이터 사이즈가 클 경우 파일 크기가 커질 수 있으므로
사용을 권한다.
👉🏻 위와같은 명령어로 생성하면 프로젝트의 최상단에 파일이 생기기 때문에 만일 fixture 폴더를 생성해 여러 모델들의 초기데이터
json파일들을 생성해주고 싶다면 경로를 함께 적어주면 된다.
loaddata
JSON 형식의 데이터를 데이터베이스에 로드할 수 있다.
python manage.py loaddata FIXTURE_PATH/FIXTURE_NAME.json
👉🏻 로드할 fixture json 파일을 불러올때 해당 파일이 위치한 프로젝트 경로를 함께 입력해준다.
나의 경우에는 프로젝트단의 fixtures 디렉토리안에 json파일이 있기 때문에 app_project/fixtures/test_fixtures.json 로
작성할 수 있다
또한 나처럼 fixtures 라는 디렉토리에 여러가지 초기 데이터 json 파일들이 있을 때
python manage.py loaddata app_project/fixtures/*
>> Installed 406 object(s) from 4 fixture(s)
애스터리스크 * 를 사용하면 해당 경로의 모든 json파일을 로드할 수 있다. 해당 명령어 사용시 한번에 4파일이 로드되는 것을 볼 수 있다.
'Dev. > Django.' 카테고리의 다른 글
| [DRF] Serialization / Deserialization 동작 변경 - to_internal_value와 to_representation (0) | 2023.04.17 |
|---|---|
| [Django] ManyToMany 모델 인스턴스 생성 및 삭제하기- add, clear (0) | 2023.04.14 |
| [Django] JSON WebToken - Simple JWT (0) | 2023.03.30 |
| [Django] Django Middleware (0) | 2023.03.16 |
| [Django] DRF로 pagination 적용하기 -PageNumberPagination (0) | 2023.03.16 |