Logo
내 게시판 만들기
파이썬

Django ORM — 모델로 DB 다루기

토순이 | 2026.04.27 13:06:16
조회 16 | 추천 0

Django ORM은 「DB 테이블을 파이썬 클래스로 표현」하는 도구입니다.

SQL을 직접 쓰지 않고 모델 메서드로 CRUD합니다.

마이그레이션도 자동 — 모델 변경 → 명령 한 번이면 DB 스키마 동기화.



모델 정의.

class Post(models.Model): title = models.CharField(max_length=200); content = models.TextField(); created_at = models.DateTimeField(auto_now_add=True); author = models.ForeignKey(User, on_delete=models.CASCADE).

클래스가 곧 테이블, 필드가 컬럼.



마이그레이션.

python manage.py makemigrations — 모델 변경 감지 → 마이그레이션 파일 생성.

python manage.py migrate — 실제 DB에 적용.

모델·DB 동기화가 자동, 변경 이력도 파일로 남음.



쿼리.

Post.objects.all() — 전체.

Post.objects.filter(author=user) — 조건.

Post.objects.get(id=1) — 단건(없으면 예외).

Post.objects.create(title="...", content="...") — 생성.

post.save()·post.delete()로 수정·삭제.



고급 — select_related·prefetch_related로 N+1 쿼리 문제 해결, annotate로 집계, F·Q 객체로 복잡한 조건.

익숙해지면 SQL을 거의 안 쓰게 됩니다.

다만 매우 복잡한 쿼리는 raw SQL이나 .extra()를 써야 할 때도 있습니다.




한 줄 요약


Django ORM은 모델 클래스로 DB 테이블을 표현, makemigrations/migrate로 스키마 동기화, objects.filter·get·create로 쿼리합니다.

select_related로 N+1 해결.




더 알아볼 것


- N+1 쿼리 문제와 해결

- F·Q 객체 — 복잡한 쿼리

- django-debug-toolbar로 쿼리 분석

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
161 햇살이 26/04/27 12 0
160 다람쥐 26/04/27 19 0
159 구름이 26/04/27 17 0
158 햇살이 26/04/27 14 0
157 멍뭉이 26/04/27 14 0
156 토순이 26/04/27 14 0
155 야옹이 26/04/27 14 0
154 별님이 26/04/27 14 0
153 다람쥐 26/04/27 17 0
152 구름이 26/04/27 20 0
151 구름이 26/04/27 15 0
150 곰돌이 26/04/27 17 0
149 야옹이 26/04/27 20 0
148 다람쥐 26/04/27 16 0
147 구름이 26/04/27 16 0
146 다람쥐 26/04/27 40 0
145 구름이 26/04/27 16 0
144 별님이 26/04/27 13 0
143 곰돌이 26/04/27 14 0
142 너구리 26/04/27 16 0
141 야옹이 26/04/27 14 0
140 너구리 26/04/27 18 0
139 멍뭉이 26/04/27 14 0
138 야옹이 26/04/27 15 0
137 별님이 26/04/27 12 0
136 야옹이 26/04/27 16 0
135 멍뭉이 26/04/27 13 0
134 햇살이 26/04/27 14 0
133 햇살이 26/04/27 12 0
132 토순이 26/04/27 16 0
신고하기

신고 사유를 선택해 주세요.