기술블로그-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 흐름 중심 예제도 추가해드릴게요! 🙂