[Python] Django - Model

김상웅·2022년 6월 4일
0

[파이썬]

목록 보기
10/17

데이터베이스를 모델링을 통해 tablefield를 만들어 원하는 데이터를 관리할 수 있습니다.

모델링은 도대체 무얼 의미하는 것일까요?

Model DB 작업과 관련 모듈로 프로젝트 디렉토리의 models.py 파일에 클래스를 통해 작성합니다.
ORM 번역 도구라고 생각하면 좋을 것 같습니다. 우리가 만든 파이썬 언어의 코드를 MySQL이 읽을 수 있게 도와줍니다.



✅ Model: Modelling


models.py 파일 내부에 클래스로 table을 생성하고 field, 데이터의 유형을 정해줄 수 있습니다

이해하기 쉽게 말하자면, models.py는 건물을 짓기 전 설계도면인 것이죠

models.py에 모델링을 끝냈으면, 이 도면을 전달해주어야 건물을 지을 수 있겠죠?

그 명령어를 터미널에 입력해주면 됩니다.

python manage.py makemigrations

명령어를 실행하면 어떤 사항이 변경되었고, 추가가 되었는지 확인할 수 있습니다.

이제 이 건물을 직접 지어보겠습니다.

다음 명령어를 터미널에 입력해보겠습니다.

python manage.py migrate

이제 models.py에서 작성한 class가 데이터베이스의 테이블로 작성된 것을 확인할 수 있습니다.

table과 field는 작업 디렉토리의 migrations라는 디렉토리에 저장이 되니 데이터베이스 터미널을 보지 않고도 확인할 수 있겠습니다.

✅ CRUD


CRUD는 create read update delete를 가리킵니다.

각각의 단어들은 데이터베이스의 데이터를 관리하는 메서드와 관련이 있겠는데요

클라이언트 (프론트엔드)가 데이와 관련된 Method 요청을 하게 되면

서버 (백엔드)에서는 그 요청을 처리하여 응답을 해줍니다.

📌 ORM

파이썬이라는 언어로 데이터베이스와 소통하기 위해서는 일종의 번역기가 필요합니다.

그것을 ORM (Objective-relational Mapping)이라고 부릅니다.

Models.py 파일에는 class 형태로 tablefield를 작성하는데요

데이터를 객체, 즉 딕셔너리 형태로 저장하게 설정을 해줍니다.

ORM 명칭에서 object가 있는 이유가 여기있었네요

이제 MySQL이라는 데이터베이스를 활용하여 데이터를 쉽고 효율적으로 관리할 수 있겠습니다.

우선 터미널에 다음 명령어를 입력하고 Django Shell에 접속하여 줍니다.

python manage.py shell

터미널에서 데이터와 관련된 CRUD처리를 할 수 있습니다.

Create: 생성

create()

데이터를 생성할 때 사용합니다.

post 요청이 들어올 때 데이터를 생성하기 위해 사용합니다.

Read: 조회

filter() 또는 get()

데이터를 조회할 때 사용합니다.

사용자가 어떤 링크를 클릭하여 페이지를 이동하였을 때, 도메인 주소와 맞는 페이지의 정보를 응답해줄 때 사용합니다.

Update: 수정

update()

데이터를 수정할 때 사용합니다.

post put 요청 등 데이터를 수정하거나 덮어쓰는 요청에 반응합니다.

만약 사용자가 작성한 게시글의 내용을 바꾸면, 데이터베이스에 저장된 게시글의 내용이 수정되는 것입니다.

Delete: 삭제

delete()

데이터를 삭제할 때 사용합니다.

delete 요청에 의해 데이터를 삭제할 수 있습니다.

만약 사용자가 작성한 게시글을 삭제하는 요청을 받았으면, 데이터베이스에서 그 게시글의 정보를 삭제합니다.



✅ QuerySet API


앞서 CRUD와 관련된 많은 메서드 일부를 확인했는데요.

데이터를 더 효율적이고 간편하게 다루기 위한 다양한 메서드가 존재합니다.

Model method

자주 사용되는 메서드입니다.

Model Method의 종류 중 일부를 소개해드리겠습니다.

  • all() , filter() , exclude() , values() , values_list()
  • get() , create() , count() , exists() , update() , delete() , first() , last()
  • ...

QuerySet: List type

Model Method의 실행결과는 QuerySet을 반환하는 경우가 있습니다.

QuerySet은 데이터 타입 중 List 형태를 지닙니다.

<QuerySet [<Category: Category object (1)>, <Category: Category object (2)>]>

  • all()
  • filter()
  • exclude()
  • values()
  • values_list()

이외 types

위의 메서드와 다르게 데이터 처리의 결과를 List가 아닌 형태로 반환하는 메서드들이 있는데요

우선 반환되는 데이터의 유형에는 아래의 유형들이 있습니다 :

<Category: Category object (1)> , 9(정수) , True(boolean) ..

  • create()
  • get()
  • update()
  • delete()
  • save()
  • exists()
  • get_or_create()
  • bulk_create()
  • count()
  • first()
  • last()
  • aggregate()




Django 프로젝트를 세팅하고 DB에 연동하는 법도 배웠겠다.

이제 데이터를 처리하고 프론트엔드와 통신에 성공하면 서버 구축이 완료되는 것 같다.

쉽게 설명하려고 작성하는 것도 참 어려운 부분인 것 같다.

Siban company 웹사이트도 다시 게시판 기능을 살려 배포를 실질적으로 해봐야겠다.

profile
누구나 이해할 수 있도록

0개의 댓글