[DJANGO]Model & Shell

박민하·2022년 6월 9일
0

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개 뿐이라 getfilter의 차이점은 없다. 그래도 filter를 사용해야 하는 경우는 언제일까?

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

profile
backend developer 🐌

0개의 댓글