20200308 django bulk update

2020. 3. 9. 00:22개발/Django

django를 활용하며 여러가지 상황을 맞닥뜨리다보니 같은 table의 각 row에 각기 다른 내용을 넣어야 할 때가 있다. 그 때나는 

for something in Table.objects.filter(somethingsomething):
	something.thing = some variable
    something.save()

위와 같은 형식으로 해야하나?(굉장히 무식한 발상이다) 하는 생각을 했다가 검색을 하며 django documentation에 다음과 같은 내용을 발견했다.: https://code.djangoproject.com/ticket/23646

 

#23646 (Add QuerySet.bulk_update() to to efficiently update many models) – Django

#23646 closed New feature (fixed) Add QuerySet.bulk_update() to to efficiently update many models Reported by: Brillgen Developers Owned by: Tom Forbes Component: Database layer (models, ORM) Version: 1.9 Severity: Normal Keywords: Cc: Tom Forbes Triage St

code.djangoproject.com

사용 예시: https://stackoverflow.com/questions/12661253/how-to-bulk-update-with-django

django-bulk-update를 활용하여 한꺼번에 update를 할 수 있다.

우선 위 코드에서 something.save()만 빼고, save를 한꺼번에 한다고 생각하면 될 것 같다.

from bulk_update.helper import bulk_update

target = Table.objects.filter(somethingsomething)
for something in target:
	something.thing = some variable

bulk_update(target)

이게 정말로 효율적일지는 소스 코드 봐야 알 것 같다. 시간 나면 봐야지...

'개발 > Django' 카테고리의 다른 글

20200429 Django와 rest-framework  (0) 2020.04.29
20200327 postgresql unnest  (0) 2020.03.27
20200309 django multi db & auto_commit  (0) 2020.03.09
20200306 Django Migration Conflict관련  (0) 2020.03.06
1-1.Migration에 대하여..!  (0) 2020.02.09