Back-End/Django

[Django] models.py 로 DB 테이블 자동 생성

uni2237 2021. 7. 1.
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

댓글