👉 Django ORM
Object-Relational Mapping의 약자로 객체(Object)와 관계형 데이터베이스(Relational Database)의 데이터를 매핑(Mapping)해주는 것을 의미한다. 객체 간의 관계를 바탕으로 SQL을 자동 생성하여 sql쿼리문 없이도 데이터베이스의 데이터를 다룰 수 있게 해준다.
데이터베이스의 테이블을 객체지향 프로그래밍에서 흔히 사용하는 객체(Class)처럼 사용할 수 있도록 해주는 기술이다.
기존 쿼리문을 작성하여 데이터베이스를 조작하는 것을 넘어서서 더 효율적이고 가독성 및 유지 보수에 적합한 코드를 만들기 위해 나온 기술이다.
http://www.incodom.kr/Django_ORM
articles (X) , Article (O)
# models.py
from django.db import models
class Demo(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
created_at = models.DateTimeField(auto_now=True)
updated_at = models.DateTimeField(auto_now_add=True)
CharField
: 제한된 문자열 필드 타입. max_length를 지정해야 함TextField
: 대용량 문자열을 갖는 필드 타입IntegerField
: 32비트 정수형 필드 타입. 정수 사이즈에 따라 BigIntegerField, SmallIntegerField를 사용할 수도 있음BooleanField
: True/False 필드 타입. NULL을 허용하기 위해서는 NullBooleanField를 사용DateTimeField
: 날짜와 시간을 갖는 필드 타입. 날짜만 가질 경우 DateField, 시간만 가질 경우 TimeField를 사용할 수도 있음DecimalField
: 소수점을 갖는 decimal 필드 타입BinaryField
: binary 데이터(2진수)를 저장하는 필드 타입FileField
: 파일 업로드 필드 타입ImageField
: FIleField의 파생 클래스로, 이미지 파일 여부를 체크UUIDField
: GUID(UUID)를 저장하는 필드 타입null
(DB 옵션) : DB Field에 NULL 허용 여부 (default : False)unique
(DB 옵션) : 유일성 여부 (default : False)blank
: 입력값 유효성 (validation) 검사 시 empty 값 허용 여부 (default : False)primary_key
: 해당 필드가 Primary Key임을 표시 (primary_key = True)default
: 필드의 디폴트 값을 지정verbose_name
: Field label이 지정되지 않으면 필드명이 쓰여짐validators
: 입력값 유효성 검사를 수항할 함수를 다수 지정choices
(form widget용) : select box 소스로 사용help_text
(form widget용) : 필드 입력 도움말 지정auto_now
: True 인 경우, record 수정 시마다 현재 시간을 자동 저장auto_now_add
: True 인 경우, record 생성 시 현재 시간으로 자동 저장(최초 저장시에만 적용)models.IntegerField(null = True)
models.IntegerField(unique = True)
models.DateTimeField(blank = True)
models.CharField(max_length = 10, primary_key = True)
models.CharField(max_length=5, default="ssafy")
$ python manage.py makemigrations
makemigrations
로 만든 설계도를 실제 db.sqlite3 DB파일에 반영$ python manage.py migrate
$ python manage.py showmigrations
$ python manage.py sqlmigrate articles 0001