[DJANGO]Model & Shell

박민하·2022년 6월 9일

DJANGO

목록 보기
4/22
post-thumbnail

✅ Model 작성하기

1. models.py 작성

  models.py 에 Model class 를 작성함으로 database의 table과 mapping이 된다. 파일 안에 내용을 작성해보자.

2. models.py 작성 내용 DB에 적용

$ python manage.py makemigrations app이름
$ python manage.py migrate

3. Mysql server(Database)에 잘 적용되었는지 확인

  먼저 로컬 mysql 서버에 접속한 후 database 목록을 불러온다.

$ mysql -u root -p
show databases;

  그리고 목록 중 서버와 연결된 database를 골라서 아래의 명령어로 database 내 table 목록을 불러온다.

use 'database 이름';
show tables;

  테이블 구조를 확인할 때는 desc 테이블명을 사용한다.

✅ Django Shell

  Django Shell은 파이썬, Django, 데이터베이스가 한데 모아서 실험해 볼 수 있는 작업장이라고 할 수 있다. 작성한 코드가 잘 기능하는지 확인하는 용도로 쓰이며, shell에서 작동안하면 다른 곳에서도 작동을 안한다는 뜻이니 디버깅 하기에 좋다. Shell에 한 번 진입해 보자.

$ python manage.py shell

  Django Shell 을 더욱 깔끔하게 만들어 사용하고자 한다면 아래 라이브러리를 설치하면 된다.

$ pip install ipython

  만약 shell 에서도 자동완성 기능을 사용하고싶으면 아래 코드를 사전에 실행해둔다.

import os, django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
django.setup()

✔ model.py 불러오기

  Shell에 진입을 했으면 model.py를 불러오자. 참고로 class 이름 부분에 *을 쓰는 것은 최대한 지양하는게 좋다.

from 앱이름.models import 클래스이름

✔ C.R.U.D


삭제도 해보자.

  이제 다른 값들도 넣어보자. 그런데 id 값이 1이 아닌 2로 시작하는것을 볼 수 있다. id 값은 delete가 된다고 해서 초기화 되지 않는다.

  파이썬 shell이니 for문도 활용 가능하다.

✔ get() VS filter()

  어차피 값은 1개 뿐이라 get과 filter의 차이점은 없다. 그래도 filter를 사용해야 하는 경우는 언제일까?

  filter는 id 값이 없는 경우에 빈 QuerySet 리스트를 반환한다. 하지만 get을 사용하면 error가 발생한다. 없는 값을 반환하는 경우 error가 발생하는 것과 어떻게든 코드가 돌아가는건 아주 큰 차이다.

profile
backend developer 🐌

0개의 댓글