Django - seed (더미 데이터 생성하기)

Dalbi·2021년 4월 13일
1
post-thumbnail
post-custom-banner

더미데이터

프로젝트를 진행하는중 데이터 베이스를 초기화하고 데이터를 새로 입력하는 일이 많아져 django로 더미데이터를 넣어주는게 가능한가 찾아보았고 seed를 알게 되었다. seed에 대해 알아보자.

seed

Django-seed 는 faker 라이브러리를 사용 하여 Django 모델에 대한 테스트 데이터를 생성한다. 우선 Django-seed부터 설치해주자.

1. 설치

아래 명령어로 faker 패키지까지 함께 설치된다.

pip install django-seed

2. 경로 설정

위 사진에서 보는것과 같이 생성된 앱 폴더 내에 management폴더를 생성하고 아래 파일들을 생성해야한다.

아래 명령어를 순서대로 생성된 앱 내로 이동하여 터미널에 입력하도록 하자.

mkdir management 
cd management
mkdir commands
touch __init__.py commands/__init__.py commands/seed_users.py

< paycache의 경우 따로 생성해 주지 않아도 된다. >

3. 파일 작성

우선 models.py부터 보도록 하자.

Stuff라는 테이블을 만들어 다양한 입력값을 받아줬다.

phone과 phone11이 존재하는건 추후에 설명하도록 하겠다.

management/commands/seed_users.py 파일을 보도록 하자.

대략적으로 코드를 확인해보도록 하자.

add_arguments():

여기서는 어떤 명령어를 통해 더미데이터 생성을 반복할지 결정한다.

본인은 "--total"이라는 커맨드를 사용하여 반복할 횟수를 int로 받기로 하였고 default를 설정함으로서 "--total"을 사용하지 않아도 2번 반복되도록 하였다.

handle():

여기서는 이제 실제로 더미데이터를 작성하는 작업을 한다.

total에서 위에서 입력된 숫자를 가져와 total이라는 변수에 저장한다.

seeder.add_entity(테이블명, 횟수, 내용)을 통해 데이터베이스에 데이터를 작성할 양식을 만든다.

위의 모델에서 Null=True인 값이 하나도없으니 모든 콜롬명을 선언하고 각 콜롬들의 조건을 설정해주자.

lambda식을 사용하지 않고 작성할 경우 반복되는 모든 데이터값이 같은 값이 입력되어 람다식을 사용해준다.

'name'에서 Faker('ko_KR')를 사용하여 지역을 한국으로 설정할 수 있다.

https://github.com/Brobin/django-seed/blob/master/django_seed/guessers.py

여기서 사용할 수 있는 메소드들을 확인 할 수 있다.

사용하기

아까 커맨드로 seed_users.py를 생성하여 이제 seed_users라는 명령어를 사용할 수 있다. 15개를 더미데이터로 만들어주도록 하자.

여러번 작성하여 75개의 더미데이터가 만들어졌다.

양식 또한 아까 지정한 양식 그대로 잘 입력된 것을 알 수 있다.

profile
백엔드..?
post-custom-banner

0개의 댓글