두숟갈 스터디 - 5
핵심 내용
Django의 쿼리와 DB 레이어를 정리하며 ORM, 트랜잭션, 인덱스를 다시 짚었다.
자세히 보기
Two Scoops of Django 7장을 중심으로 Django 쿼리와 데이터베이스 레이어를 공부했다. 현주님이 장의 핵심을 요약·설명했고, 호성님이 심화 자료를 준비해 발표했다.
핵심 내용은 Django ORM과 Model Manager의 역할, 그리고 상세 페이지에서는 get() 대신 **get_object_or_404()**를 뷰에서만 사용하자는 점이었다. 예외가 날 수 있는 쿼리는 try-except로 처리하고, 데이터가 정말 필요해질 때까지 SQL 실행을 미루는 지연 연산을 활용하면 코드 가독성과 유지보수성이 좋아진다.
고급 쿼리 도구로는 Query Expressions와 Database Functions를 소개했으며, 안전성과 성능을 높이는 방향으로 활용할 수 있다고 정리했다. 반대로 특별한 이유가 없다면 raw SQL은 피하고, 필요에 따라 index를 적용하는 것이 권장된다.
트랜잭션 부분에서는 각각의 HTTP 요청을 트랜잭션으로 다루는 접근을 살펴봤다.
- 명시적인 트랜잭션 선언
django.http.StreamingHttpResponse와 트랜잭션의 관계django.db.transaction.non_atomic_requests데코레이터로 특정 뷰를 트랜잭션 밖으로 분리하는 방법
심화 학습에서는 ObjectDoesNotExist vs DoesNotExist, iterator() vs all(), DB index의 원리, EXPLAIN을 통한 쿼리 시간 확인, Transaction ACID를 다뤘다. 평소 IPython notebook과 Django ORM으로 값을 검증하고 추출해 왔기 때문에 익숙한 내용도 있었지만, 막연하게 알고 있던 db_index와 Transaction ACID를 정확히 짚고 넘어간 점이 특히 유익했다.
전체적으로는 실무에서 자주 쓰는 Django DB 기능을 다시 정리하면서, 자신의 성장 속도를 끌어올릴 계기로 삼겠다는 다짐으로 마무리했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.