Django_13) Django Fixtures

지비지비집·2023년 11월 7일
0

Django

목록 보기
13/14
post-thumbnail

Django에서 기본적으로 학습해야할 내용을 배워봤다. 여태 배운 것들로 다른 기능들을 구현할 수 있을까 하는 의심이 들지만 DB에 대한 이해와 최초 탄탄한 설계와 공식문서를 적절히 활용한다면 충분히 할 수 있을 것이다. Fixtures와 쿼리 개선에 대해서 배워보자.

Fixtures

Django가 데이터베이스로 가져오는 방법을 알고 있는 데이터 모음
데이터베이스 구조에 맞추어 작성 되어있음
초기 데이터 제공을 위해 사용됨

협업하는 유저 A, B가 있다고 가정하자.
1. A가 먼저 작업 후 git push를 함
-> 이때, gitignore로 인해 DB가 업로드 되지 않아 A가 생성한 데이터는 가지 않음
2. B가 pull or clone 받음
-> DB가 없는 프로젝트를 받음
이처럼 Django 프로젝트의 앱을 처음 설정할 때 동일하게 준비된 데이터로 DB를 미리 채우는 것이 필요한 순간이 있음 이를 fixtures를 활용하여 초기 데이터를 제공할 수 있다.

Fixtures 관련 명령어

  1. dumpdata(생성 - 데이터 추출)

    DB의 모든 데이터를 추출하여 json 형식으로 저장

$ python manage.py dumpdata [app_name[.ModelName] [app_name[.ModelName] ...]] > filename.json

<참고> 모든 모델을 한 번에 dump하기

<참고> Fixtures 파일을 직접 만들지 말것 -> 반드시 dumpdata 명령어를 사용하여 생성

  1. lodaddata(로드 - 데이터 입력)

    Fixtures 데이터를 DB로 불러오기

<참고> Fixtures 파일 기본 경로

app_name/fixtures/

  • loaddata 활용
  1. db.sqlite3 파일 삭제 후 migrate 진행
  2. fixtures 파일 이동
  3. loaddata 진행

    <참고> loaddata 순서 주의사항
    만약 한번에 loaddata를 하지않는다면 모델 관계에 따라 load하는 순서가 중요할 수 있다.
    comment는 article과 user의 key가 필요하고
    article는 user의 key가 필요하므로 의존성을 가진다.
    즉 현재 관계에선 user -> article -> comment 순으로 data를 넣어야 오류가 발생하지 않음.

<참고> loaddata시 encoding codec 관련 에러가 발생하는 경우 - 2가지 방법
1. dumpdata시 추가 옵션 작성

$ python -Xutf8 manage.py dumpdata []
  1. 메모장 활용
  2. 메모장으로 json 파일 열기
  3. 다른 이름으로 저장
  4. 인코딩을 UTF-8로 선택 후 저장
profile
"정말 무엇인가를 이해한다면 전문용어를 모르는 사람에게도 설명할 수 있어야 한다." -리처드 파인만-

0개의 댓글