Back-End/Django
[Django] models.py 로 DB 테이블 자동 생성
uni2237
2021. 7. 1. 17:32
728x90
728x90
Django는 DB에 테이블을 자동으로 생성해주는 기능이 있다.
원하는 DB 모델을 models.py 안에 작성한 뒤 migrations, migrate 를 해주면 된다.
backend가 장고 프로젝트이고, api가 app이다.
api/models.py 에서 시작해보자!
1) models.py에 내용 추가
2) migrations 파일 생성
$ python manage.py makemigrations api
-> 1)에서 만들어준 model인 Post2와 같이 DB의 테이블을 생성하기 위한 migration 파일을 생성한다.
이렇게 나오면 성공!
3) migrate
$ python manage.py migrate api
2)에서 만들어진 migration 파일을 이용해서 DB의 테이블 생성!
이렇게 나오면 성공 ~~~!
4) 결과 확인
MySQL Workbench 를 통해 확인해보면
models.py에서 설정해주었던 class명인 Post2,
app의 이름인 api가 합쳐져 api_post2라는 이름의 테이블이 생성된 것을 확인할 수 있다.
(컬럼들도 models.py에서 설정한대로 생김!)
추가) 테이블 자동 생성 안되는 경우
첨에 models.py에 위와 같이 Meta를 사용해서 했었는데 , 이렇게 하면 DB에 테이블이 자동으로 생성되지 않는다.
managed=False 로 자동 migration을 막고 있기 때문!!
이 경우는 db에 미리 테이블을 생성한 후 함부로 migration 되는 것을 방지하고 싶을 때 사용하면 된다 ~~~
추가) migration 꼬였을 때
migration이 꼬였을 때는 vscode에서 migrations 폴더를 그냥 지워 버리고 다시 해보면 됨 !
728x90
728x90