ACHO.pk devlog

[멋쟁이사저처럼10기] Django models.py 본문

멋쟁이사자처럼

[멋쟁이사저처럼10기] Django models.py

Acho 2022. 7. 4. 20:08

 

커뮤니티성 웹 서비스를 만들기 위해서는 아래와 같은 이론을 알아야 한다.

  • Database 이론
  • 사용자 입력 다루기
  • Database 안의 목록 갖고 오기
  • Database 안의 대상 하나 갖고 오기
  • 댓글, 대댓글 기능 구현하기
  • 회원가입, 로그인, 로그아웃
  • 배포하기

완성형 웹 서비스

CRUD : 데이터 처리의 기본 덕목  ( Create, Read, Update, Delete )
     어떠한 대상을 저장하고, 저장된 대상을 가공하는 행동

백엔드 개발을 잘한다 = 데이터베이스와의 능수능란한 상호작용을 한다


Django를 위한 최소한의 Database

웹 프레임워크와 데이터 베이스는 독립적이다. 따라서 django는 database를 활용해야 한다.

Database : 데이터를 저장하는 거대한 저장소
RDBMS : 관계형 데이터베이스 시스템, 데이터베이스를 관리해주는 소프트웨어
     데이터를 테이블(표)처럼 활용 
SQL : DB 접근, 조작 언어

<학생 Table>

학번 이름 학과 수강과목
20202222 최코드 소프트웨어학과 운영체제, C++
20212222 김코드 경영학과 경영학원론

<소프트웨어학과 Table>

개설과목 학기 담당 교수
운영체제 1 김교수
알고리즘 2 강교수

 

Primary Key( 기본키 )  -  학번, 아이디 등..

  • 반드시 존재(NULL X)
  • 다른 값과 중복 X

Foreign Key( 외래키 )  - 수강과목과 개설과목 등... 

  • 서로 다른 Table에서 연관지어 참조함
  • 참조 당하고 있는 Table에서 데이터 값이 변경, 삭제가 있을 경우, 참조하는 Table에서 해당 데이터 값을 삭제하거나 그 열을 지움

Django Models

 

ORM( Object Relational Mapping ) : 객체를 이용한 Table 매핑 
파이썬 객체를 이용해서 어떻게 Database에 SQL 질의문을 보낼 수 있을까?
    ○  models.py 안에 class로 table 표현

 

Migration : Database를 초기화해주거나 변경사항을 반영해주는 것

database를 처음 초기화할 때

python manage.py migrate
#초기화, 변경사항 반영

 

변경사항 반영할 때는 변경사항 파일을 바탕으로 database에 반영한다.

python manage.py makemigrations
#변경사항 파일을 자동으로 생성

  • django에서는 Class(객체)를 이용해서 Table를 정의한다.
  • 그 Class를 정의할 때 각각의 데이터가 어떤 자료형을 가지는 지, 필드 타입을 명시해야한다.
  • database에 변경사항을 알려줘야 한다.
  • database에 이미 데이터가 존재하고, 그 데이터의 구조를 변경하거나 수정하고 싶을 때, python manage.py makemigrations 명령어로 변경사항 migration 파일을 만들고 python manage.py migrate 명령어를 실행하면 된다.

 

 

 

 

 

 

 

 

Comments