HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
나의 MBIT(My Best IT personalities) Page 만들기!
/
🎧
007. Database Seeding
🎧

007. Database Seeding

1. 데이터베이스 시딩(database seeding)이란?2. dumpdata3. loaddata

1. 데이터베이스 시딩(database seeding)이란?

데이터베이스의 초기 데이터를 설정하는 것을 말합니다.
모델에 요소를 추가하는 방법으로 우리는 두 가지 방법을 사용하였습니다.
  • 관리자 페이지
  • 장고 Shell
그렇지만 아주 많은 데이터를 이러한 방법으로 일일이 저장하기에는 무리가 있습니다. 이럴 때 loaddata와 dumpdata 명령어를 활용할 수 있습니다.
 

2. dumpdata

dumpdata 명령어는 현재 DB에 있는 데이터를 텍스트 형식의 파일로 저장하는 것을 말합니다. 추후에 이 파일은 loaddata 명령어를 통해 읽어서 원하는 DB에 저장할 수 있습니다.
python manage.py dumpdata main --output data.json
  • main : main 이라는 앱의 모델들의 데이터를 저장
  • --output data.json : data.json이라는 파일로 저장
 
명령 수행 결과로 만들어진 data.json 파일은 다음과 같습니다.
[{"model": "main.developer", "pk": 1, "fields": {"name": "프론트 엔드"}}, {"model": "main.developer", "pk": 2, "fields": {"name": "백엔드 개발"}}, {"model": "main.developer", "pk": 3, "fields": {"name": "게임 개발"}}, {"model": "main.developer", "pk": 4, "fields": {"name": "데이터 분석과 인공지능"}}, {"model": "main.developer", "pk": 5, "fields": {"name": "정보보안"}}, {"model": "main.question", "pk": 1, "fields": {"number": 1, "content": "당신이 가장 재밌었던 수업은?"}}, {"model": "main.choice", "pk": 1, "fields": {"content": "프론트엔드(HTML, CSS, Javascript, etc)", "question": 1, "developer": 1}}]
 
하지만 한 줄로 출력되어 알아보기가 쉽지 않습니다. 그럴 때에는 --indent 4 옵션을 추가합니다.
python manage.py dumpdata main --output data.json --indent 4
 
그러면 아래와 같이 알아보기 쉽게 들여쓰기가 되어서 출력됩니다.
[ { "model": "main.developer", "pk": 1, "fields": { "name": "프론트 엔드" } }, { "model": "main.developer", "pk": 2, "fields": { "name": "백엔드 개발" } }, { "model": "main.developer", "pk": 3, "fields": { "name": "게임 개발" } }, { "model": "main.developer", "pk": 4, "fields": { "name": "데이터 분석과 인공지능" } }, { "model": "main.developer", "pk": 5, "fields": { "name": "정보보안" } }, { "model": "main.question", "pk": 1, "fields": { "number": 1, "content": "당신이 가장 재밌었던 수업은?" } }, { "model": "main.choice", "pk": 1, "fields": { "content": "프론트엔드(HTML, CSS, Javascript, etc)", "question": 1, "developer": 1 } } ]
 

3. loaddata

dumpdata에서 설명했듯이, loaddata는 dumpdata로 생성된 데이터 파일을 읽어서 DB에 저장하는 명령어입니다. loaddata 명령어를 이용해 우리가 미리 준비한 설문 데이터를 DB에 저장해봅시다.
data.json
14.4KB
프로젝트 폴더에 data.json 파일을 만들고 해당 내용을 모두 복사해서 붙여넣습니다.
notion image
 
이제 loaddata 명령어로 DB에 저장합니다.
python manage.py loaddata data.json
 
notion image
사진 처럼 나온다면 저장에 성공한 것입니다.
 
이제 설문 페이지로 접속하면 저장된 데이터들이 모두 잘 나오는 것을 확인할 수 있습니다.
notion image