📗 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 | 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 | 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()
→ 우선, 제목과 내용 정도만 추가했다.
- 각각의 필드는 테이블의 칼럼이다.
- 필드의 타입에 따라 사용하며, 각 필드별로 필요한 옵션들이 존재한다.
- 공식문서 참고 (🔗 Django Fields Types)
↓ 직접 해보기
더보기
- 필드 : 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 파일을 볼 수 있게 된다.
'공부 > Django 공부' 카테고리의 다른 글
[Django] Django MTV 사용하기 (CR), POST Method (0) | 2025.01.14 |
---|---|
[Django] Django ORM, CRUD with Shell (0) | 2025.01.14 |
[Django] 다중 앱과 URL (0) | 2025.01.13 |
[Django] HTML, HTTP Form, 화면에 입력창 만들기 (0) | 2025.01.13 |
[Django] Template System, DTL 문법, 템플릿 상속 (0) | 2025.01.12 |