기술블로그-Django편
📌 Django ORM 완전정복: 개념부터 예시, 흐름까지 한 번에 정리!
Chansman
2025. 5. 8. 22:13
📌 Django ORM 완전정복: 개념부터 예시, 흐름까지 한 번에 정리!
🧠 ORM이란 무엇인가요?
**ORM (Object Relational Mapping)**은 객체지향 언어(Python)의 클래스와 관계형 데이터베이스의 테이블을 자동으로 연결해주는 기술입니다.
📌 핵심 개념 매핑표
Python 개념 DB 개념
클래스 (class) | 테이블 (table) |
인스턴스 (object) | 행 (row) |
속성 (attribute) | 열 (column) |
💬 즉, SQL 쿼리를 직접 작성하지 않아도 Python 코드만으로 데이터를 조작할 수 있습니다!
🧱 예시: Django 모델로 ORM 구현하기
from django.db import models
class Todo(models.Model):
title = models.CharField(max_length=100)
is_completed = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
이렇게 작성하면 Django는 다음과 같은 SQL 테이블을 자동으로 생성합니다:
id title is_completed created_at
1 | 공부하기 | False | 2025-05-08 10:00AM |
🔄 ORM 작동 흐름 요약
1. 모델 정의 (models.py)
↓
2. python manage.py makemigrations
- 모델 변경사항을 감지해 "설계도" 생성
↓
3. python manage.py migrate
- 설계도를 실제 데이터베이스에 반영
📁 예시 마이그레이션 파일 이름:
- 0001_initial.py
- 0002_add_field_title.py
🧠 마이그레이션은 Git처럼 이전 변경사항을 기반으로 누적 기록되며, 충돌 없이 정교하게 반영됩니다.
🛠️ ORM을 사용한 데이터 조작 예시
# 객체 생성
Todo.objects.create(title="장보기")
# 전체 조회
Todo.objects.all()
# 조건 검색
Todo.objects.filter(is_completed=False)
# 객체 수정
todo = Todo.objects.get(id=1)
todo.is_completed = True
todo.save()
# 삭제
todo.delete()
⚠️ ORM 사용 시 주의사항
실수 예시 바른 사용법
DB를 직접 수정하고 마이그레이션 X | 모델 → makemigrations → migrate 순서 지키기 |
기존 필드명을 무작정 변경 | 변경 전 마이그레이션 백업 추천 |
중복된 마이그레이션 파일 여러 개 생성 | squashmigrations로 정리 가능 |
✅ 마무리 요약
항목 설명
ORM 정의 | 객체(Python 클래스) ↔ 관계형 DB 테이블 매핑 기술 |
장점 | SQL 없이도 DB 제어 가능, 코드 중심 설계 가능 |
핵심 명령어 | makemigrations (설계도 생성), migrate (DB 반영) |
실무 적용 팁 | Git처럼 마이그레이션 이력 누적 / 충돌 방지 필수 |
💡 다음 학습 추천:
- ForeignKey, OneToMany, ManyToMany 관계 표현법
- ORM 최적화 쿼리 (select_related, prefetch_related)
- Admin 페이지에서 ORM 연결 확인 방법
필요하시면 CRUD 흐름 중심 예제도 추가해드릴게요! 🙂