본문 바로가기
Django

django 에서 bulk insert

by 이농이능 2018. 4. 2.

django 프로젝트에서, 한번에 insert만 몇만번을 해야하는 코드를 작성하고있는데,

bulk_create 를 사용하니 시간이 확 줄게 되었다.


SQL 에서 사용하는 BULK_INSERT 의 기능을 실행시켜주는 장고의 orm이다. 

BULK_INSERT에 대해서 간략하게 설명하자면, 대용량 데이터를 로드하는 것이다.


django orm 에서, 개별로 save 를 해주게 되는경우,

connect -> 저장 -> disconnect 가 반복되기 때문에 느리게 저장된다. 


하나의 query 문에 많은 일을 하도록 만드는 것이 좋고,

많은 양의 데이터를 한꺼번에 저장해야할 경우 bulk_create를 사용하면 속도를 배로 줄일 수 있다.



사용예시)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#a list of games that need to be created
game_list = ['Puerto Rico''Eclipse''Settlers of Catan''Agricola']
 
#the list that will hold the bulk insert
bulk_games = []
 
#loop that list and make those game objects
for g in game_list:
new_game = Game()
new_game.title = g
 
#add game to the bulk list
bulk_games.append(new_game)
 
#now with a list of game objects that want to be created, run bulk_create on the chosen model
Game.objects.bulk_create(bulk_list)
 
#done
cs



출처 : 

https://codyparker.com/django-quick-tip-bulk-inserts/

'Django' 카테고리의 다른 글

Django orm으로 최대값, 가장 나중에 저장된 인덱스 불러오는 방법  (0) 2018.04.18
django + mariaDB  (0) 2018.04.16
django fliter 에다 list 넣기  (0) 2018.03.29
django query filter, value, distinct  (0) 2018.03.28
django query  (0) 2018.03.28