Django는 DB에 테이블을 자동으로 생성해주는 기능이 있다.
원하는 DB 모델을 models.py 안에 작성한 뒤 migrations, migrate 를 해주면 된다.
![[Django] models.py 로 DB 테이블 자동 생성 [Django] models.py 로 DB 테이블 자동 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
backend가 장고 프로젝트이고, api가 app이다.
api/models.py 에서 시작해보자!
1) models.py에 내용 추가
![[Django] models.py 로 DB 테이블 자동 생성 - 1) models.py에 내용 추가 [Django] models.py 로 DB 테이블 자동 생성 - 1) models.py에 내용 추가](https://blog.kakaocdn.net/dn/c0UtDZ/btq8A8bR3lH/2wpJNhXclfrZfZJ50kIxfk/img.png)
2) migrations 파일 생성
$ python manage.py makemigrations api
-> 1)에서 만들어준 model인 Post2와 같이 DB의 테이블을 생성하기 위한 migration 파일을 생성한다.
![[Django] models.py 로 DB 테이블 자동 생성 - 2) migrations 파일 생성 [Django] models.py 로 DB 테이블 자동 생성 - 2) migrations 파일 생성](https://blog.kakaocdn.net/dn/dn7Exp/btq8BDoV45l/TxxkUQ8gLK7oBVr72o8KHK/img.png)
이렇게 나오면 성공!
3) migrate
$ python manage.py migrate api
2)에서 만들어진 migration 파일을 이용해서 DB의 테이블 생성!
![[Django] models.py 로 DB 테이블 자동 생성 - 3) migrate [Django] models.py 로 DB 테이블 자동 생성 - 3) migrate](https://blog.kakaocdn.net/dn/ba6k40/btq8wzaDK9w/RdcDGhTDh4l697122hckhK/img.png)
이렇게 나오면 성공 ~~~!
4) 결과 확인
MySQL Workbench 를 통해 확인해보면
![[Django] models.py 로 DB 테이블 자동 생성 - 4) 결과 확인 [Django] models.py 로 DB 테이블 자동 생성 - 4) 결과 확인](https://blog.kakaocdn.net/dn/cBZUtc/btq8yczzYAi/kxYNm8RuB2o02kQhlHRh4k/img.png)
models.py에서 설정해주었던 class명인 Post2,
app의 이름인 api가 합쳐져 api_post2라는 이름의 테이블이 생성된 것을 확인할 수 있다.
(컬럼들도 models.py에서 설정한대로 생김!)
추가) 테이블 자동 생성 안되는 경우
![[Django] models.py 로 DB 테이블 자동 생성 - 4) 결과 확인 - 추가) 테이블 자동 생성 안되는 경우 [Django] models.py 로 DB 테이블 자동 생성 - 4) 결과 확인 - 추가) 테이블 자동 생성 안되는 경우](https://blog.kakaocdn.net/dn/Pyd3f/btq8xLVZF30/EflCAlAKIq8Wg1NaWSjekK/img.png)
첨에 models.py에 위와 같이 Meta를 사용해서 했었는데 , 이렇게 하면 DB에 테이블이 자동으로 생성되지 않는다.
managed=False 로 자동 migration을 막고 있기 때문!!
이 경우는 db에 미리 테이블을 생성한 후 함부로 migration 되는 것을 방지하고 싶을 때 사용하면 된다 ~~~
추가) migration 꼬였을 때
migration이 꼬였을 때는 vscode에서 migrations 폴더를 그냥 지워 버리고 다시 해보면 됨 !
![[Django] models.py 로 DB 테이블 자동 생성 - 4) 결과 확인 - 추가) migration 꼬였을 때 [Django] models.py 로 DB 테이블 자동 생성 - 4) 결과 확인 - 추가) migration 꼬였을 때](https://blog.kakaocdn.net/dn/Ug5d4/btq8yd6pila/RKG8WLqN0ffKpsukOp6xTK/img.png)
'Back-End > Django' 카테고리의 다른 글
[Django] 01. REST framework로 Django API 만들기 (0) | 2021.07.05 |
---|---|
[Django] models.py 에서 필요없는 테이블 삭제 (0) | 2021.07.02 |
[Django] 03. 장고 관리자(admin) + 서버 실행! (0) | 2021.06.28 |
[Django] 02. 장고 app 만들기 + db model 설정 (0) | 2021.06.23 |
[Django] 01. Django 프로젝트 생성 + Mysql 연동 (0) | 2021.06.22 |
댓글