Dev./Django.

[Django] Django에서 fixture 사용

limitation01 2023. 3. 31. 21:38

Fixture

일반적으로 데이터베이스의 초기 데이터나 테스트 데이터를 쉽게 생성하고 로드할 수있게 해주는 도구이다. 데이터베이스에서 내보낸 JSON 또는 XML 형식의 데이터를 이용하여, 다른 데이터베이스에 데이터를 이전하거나, 초기 데이터를 적용하는 데 사용할 수 있다.

 

Dump & Load

fixture는 dumpdataloaddata 관리 명령을 사용하여 작업할 수 있다. 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파일이 로드되는 것을 볼 수 있다.