프로젝트를 진행하는중 데이터 베이스를 초기화하고 데이터를 새로 입력하는 일이 많아져 django로 더미데이터를 넣어주는게 가능한가 찾아보았고 seed를 알게 되었다. seed에 대해 알아보자.
Django-seed 는 faker 라이브러리를 사용 하여 Django 모델에 대한 테스트 데이터를 생성한다. 우선 Django-seed부터 설치해주자.
아래 명령어로 faker 패키지까지 함께 설치된다.
pip install django-seed
위 사진에서 보는것과 같이 생성된 앱 폴더 내에 management폴더를 생성하고 아래 파일들을 생성해야한다.
아래 명령어를 순서대로 생성된 앱 내로 이동하여 터미널에 입력하도록 하자.
mkdir management cd management mkdir commands touch __init__.py commands/__init__.py commands/seed_users.py
< paycache의 경우 따로 생성해 주지 않아도 된다. >
우선 models.py부터 보도록 하자.
Stuff라는 테이블을 만들어 다양한 입력값을 받아줬다.
phone과 phone11이 존재하는건 추후에 설명하도록 하겠다.
management/commands/seed_users.py 파일을 보도록 하자.
대략적으로 코드를 확인해보도록 하자.
여기서는 어떤 명령어를 통해 더미데이터 생성을 반복할지 결정한다.
본인은 "--total"이라는 커맨드를 사용하여 반복할 횟수를 int로 받기로 하였고 default를 설정함으로서 "--total"을 사용하지 않아도 2번 반복되도록 하였다.
여기서는 이제 실제로 더미데이터를 작성하는 작업을 한다.
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개의 더미데이터가 만들어졌다.
양식 또한 아까 지정한 양식 그대로 잘 입력된 것을 알 수 있다.