📗 Django 


Django Model

  • 저장할 데이터에 대한 필드와 동작들을 포함한 데이터베이스 구조(layout)이다.
  • Django는 Model을 이용해서 데이터를 조작한다.
  • 일반적으로 하나의 Model은 하나의 데이터베이스 테이블을 의미한다.
    • 1:1 = Model:Database

 

데이터베이스(Database)

  • 잘 정리된 데이터가 모여있는 것이다.

 

쿼리(Query)

  • 데이터베이스를 조작할 수 있는 언어이다.

 

스키마(Schema)

  • 데이터베이스의 구조, 관계 등을 정의한 것이다.
    • → 전반적인 명세서라고 할 수 있다.
  • 예시
더보기

사용자 (Users)

  • 사용자 ID (User_ID) - 정수 (Integer)
  • 이름 (Name) - 문자열 (String)
  • 이메일 (Email) - 문자열 (String)
  • 주소 (Address) - 문자열 (String)

책 (Books)

  • 책 ID (Book_ID) - 정수 (Integer)
  • 제목 (Title) - 문자열 (String)
  • 저자 (Author) - 문자열 (String)
  • 출판사 (Publisher) - 문자열 (String)
  • 가격 (Price) - 부동 소수점 (Float)

주문 (Orders)

  • 주문 ID (Order_ID) - 정수 (Integer)
  • 사용자 ID (User_ID) - 정수 (Integer)
  • 책 ID (Book_ID) - 정수 (Integer)
  • 주문일 (Order_Date) - 날짜/시간 (Date/Time)
  • 수량 (Quantity) - 정수 (Integer)

 

테이블(Table)

  • 열(Column) - 속성 / 필드(Field)
  • 행(Row) - 데이터 / 레코드(Record) / 튜플(Tuple)
  • 조직화된 데이터 요소들의 집합이다.
  • 예시
더보기

사용자(Users)

 

User_ID Name Email Address
1 John Doe john@example.com 123 Main St
2 Jane Doe jane@example.com 456 Elm St

 

책 (Books)

 

Book_ID Title Author Publisher Price
101 Introduction to Databases Alice Smith ABC Books $20.00
102 Data Structures in Python Bob Johnson XYZ Publishing $25.00

 

데이터베이스 기본 구조

User_ID Name Email Address
1 John Doe john@example.com 123 Main St
2 Jane Doe jane@example.com 456 Elm St

 

  • 테이블(Table)
  • 기본키, PK(Primary Key)
  • 열(Column)
  • 행(Row)

→ 우리는 이러한 데이터베이스를 Model을 사용해서 구조화하고 조작할 예정이다.


Model 작성해보기

== colums

모든 Model은 class로 정의한다.

model.py
from django.db import models


class Article(models.Model):
    pass
  • models.Model을 상속받아서 사용하고자 하는 데이터 스키마를 정의한다.
  • 모든 모델은 models.Model의 서브 클래스로 표현한다.

 

필드 추가하기
from django.db import models


class Article(models.Model):
    title = models.CharField(max_length=50)
    content = models.TextField()

→ 우선, 제목과 내용 정도만 추가했다.

  • 각각의 필드는 테이블의 칼럼이다.
  • 필드의 타입에 따라 사용하며, 각 필드별로 필요한 옵션들이 존재한다.

 

↓ 직접 해보기

더보기
  • 필드 : title, content
    • 각각의 컬럼명이 된다.

 

많이 쓰는 필드

생성일과 수정일

(auto_now_add=True)	# 생성일
(auto_now=True)		# 수정일

 

↓ 필드 수정한 걸 마이그레이션 반영하기

더보기
% python manage.py makemigrations

 

1) Provide a one-off default now which will be set on all existing rows

  • 모든 기존 행에 설정될 일회성 기본값을 지금 제공합니다.

2) Quit and manually define a default value in models.py.

  • 종료하고 models.py에서 수동으로 기본값을 정의합니다. 

 

  • 1를 선택하였다.
  • Enter를 친다

 

  • 반영 완료!

마이그레이션(Migration)

만들어 놓은 Model의 변경사항을 database에 반영하는 것을 의미

 

마이그레이션 관련 명령어

⭐️ 마이그레이션을 생성하는 코드 ⭐️
python manage.py makemigrations

 

⭐️ 반영되지 않은 마이그레이션 반영하는 코드 ⭐️
python manage.py migrate

 

반영되었는지 확인해 주는 코드
python manage.py showmigration

 

해당 마이그레이션이, 어떤 SQL문을 작성하였는지 보여주는 코드
python manage.py sqlmigrate <app_name> <migration_no>

 

↓ 마이그레이션 직접 해보기

더보기

1️⃣ 마이그레이션 생성하기

% python manage.py makemigrations
  • 입력을 하면, 0001_initial.py이 생긴다.

2️⃣ 마이그레이션 반영하기

% python manage.py migrate

3️⃣ 데이터베이스 확인하기

  • django는 기본적으로 sqlite 데이터베이스를 내장하여 사용한다.
  • 개발 시에는 이 곳을 사용하다가 추후에 변경하는 방식으로 개발한다.
SQLite VSCode Setting 설치하기

 

  • command + shift + p를 눌러서 SQLite:Open Database를 누른다.
  • db.sqlite3를 선택해준다.
  • 그렇게 하면 SQLITE EXPLORER가 생기고 SQL 파일을 볼 수 있게 된다.

 

 

 

+ Recent posts