[Django] Bulk Operations에 대해서

2024. 7. 3. 10:15· Django/DRF
목차
  1. Bulk Operations 이란?
  2. Django에서의 Bulk Operations 
  3. bulk_create()
  4. bulk_update()
  5. bulk_delete()
반응형

장고 개발을 하면서 여러 객체에 대한 데이터 베이스 업데이트를 진행해야 할 일이 있었다. 기존에는 for문을 이용하여 처리하였는데 대량의 데이터 처리를 효율적으로 처리할 수 있는 기능인 Bulk 연산에 대해서 알게 되었다.

 

Bulk Operations 이란?

Bulk 연산은 여러 개의 데이터 베이스 레코드를 한 번에 삽입, 업데이트, 삭제하는 작업을 의미한다. 이 기능을 사용하면 각각의 레코드에 대해 별도의 쿼리를 실행하는 것보다 훨씬 효율적으로 데이터를 처리하고 쿼리 성능을 높일 수 있다.


기존에 for문을 이용하여 처리할 경우 개별적인 쿼리가 실행되는 반면 bulk는 적은 수의 쿼리로 실행이 되어 데이터 베이스 성능을 향상할 수 있고, 코드를 간결하게 유지할 수 있다는 장점이 있었다.

 

반대로, 하나의 쿼리로 많은 객체를 메모리에 로드하므로 메모리 사용량에 주의해야 하며, 삽입 연산인 bulk_create의 경우는 생성된 객체들을 반환하지 않음으로, 필요한 경우 다시 조회해야 할 수 도 있다.

 

Django에서의 Bulk Operations 

앞서 이야기했듯, Bulk는 아래와 같은 주요 연산을 제공한다

  • bulk_create()
  • bulk_update()
  • bulk_delete()

bulk_create()

여러 개의 객체를 한 번에 데이터베이스에 삽입해야하는 경우 사용된다. 예를 들어 수백개의 새 사용자 계정을 한번에 생성해야하는 경우 유용하다.

 

모든 객체를 하나의 쿼리로 해결하기 때문에 성능이 크게 향상된다.

from myapp.models import MyModel

objects = [
    MyModel(field1='value1', field2='value2'),
    MyModel(field1='value3', field2='value4'),
    # 여러 객체 추가
]

MyModel.objects.bulk_create(objects)

 

bulk_update()

여러 객체를 한번에 업데이트하는 데 사용된다.  변경할 필드 목록을 인자로 받아 사용된다.

from myapp.models import MyModel

objects = MyModel.objects.filter(some_condition=True)
for obj in objects:
    obj.field_to_update = 'new_value'

MyModel.objects.bulk_update(objects, ['field_to_update'])

 

bulk_delete()

bulk_delete를 이용하여 제거할 수 있으나, queryset의 delete메서드를 이용하여 대량 삭제할 수 있기 때문에 굳이 사용하지 않고 DELETE 쿼리를 사용하여 처리할 수 있다.

from myapp.models import MyModel

MyModel.objects.filter(some_condition=True).delete()
반응형
저작자표시 (새창열림)

'Django > DRF' 카테고리의 다른 글

[Django] admin.ModelAdmin 메서드 정리  (0) 2024.07.03
[Django] Model Meta 설정 Permission을 이용한 사용자 접근 제한  (0) 2024.07.03
[Django] 모델 기본 필드 이해하기  (1) 2024.06.18
[Django] Generic date views (Archive views)  (0) 2024.06.18
[Django] django_extensions  (0) 2024.06.17
  1. Bulk Operations 이란?
  2. Django에서의 Bulk Operations 
  3. bulk_create()
  4. bulk_update()
  5. bulk_delete()
'Django/DRF' 카테고리의 다른 글
  • [Django] admin.ModelAdmin 메서드 정리
  • [Django] Model Meta 설정 Permission을 이용한 사용자 접근 제한
  • [Django] 모델 기본 필드 이해하기
  • [Django] Generic date views (Archive views)
Jong_seoung
Jong_seoung
기록하자, 머리는 생각하는 곳이지 저장장치가 아니다.
반응형
Jong_seoung
Today_developStory
Jong_seoung
전체
오늘
어제

블로그 메뉴

  • Home
  • Git Hub
  • 분류 전체보기 (351)
    • Theory (16)
    • Java (3)
      • 알고리즘 (2)
      • 문법 (0)
    • Spring (7)
      • 스프링 입문 (6)
      • PickTalk (0)
      • 에러처리 (1)
    • Python (80)
      • 알고리즘 - 이론 (17)
      • 알고리즘 - 내장함수, 라이브러리 등등 (3)
      • 알고리즘 - 백준 (53)
      • 나도코딩 정리 (2)
      • 기타 (5)
    • Django (159)
      • DRF (105)
      • 인프라 (46)
      • DataBases (2)
      • API Docs (6)
    • FrontEnd (22)
      • htmx (2)
      • React (8)
      • 자바스크립트 (12)
    • GIT (16)
    • 기타 (8)
      • 정리 (2)
      • Flutter (1)
      • 마이크로프로세서 - ATmega128 (2)
      • 개발환경 세팅 (3)
    • 자격증 (37)
      • 정보처리기사 (19)
      • SQLD자격증 (18)

인기 글

최근 글

태그

  • alarm
  • BFS
  • CSRF
  • Django
  • django channels
  • django sse
  • django tutorial
  • django 배포
  • django 스웨거 적용
  • Django 이미지 저장

최근 댓글

hELLO · Designed By 정상우.v4.3.0
Jong_seoung
[Django] Bulk Operations에 대해서
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.