Django1.4で、やっと標準でバルクインサートがサポートされた。
QuerySetにbulk_createというメソッドが増えている。
単純なモデルを作って、動きを見てみる。
試したのはMySQL5.5、Django.1.4.1
myapp/models.py
class Item(models.Model): name = models.CharField(max_length=20) class Meta: db_table = 'item'
このモデルをシェルから使う。settings.DEBUG=Trueの状態でconnection.queriesの実行されたSQLを見てみる。
>>> from myapp.models import Item >>> Item.objects.bulk_create([ ... Item(name='Item1'), ... Item(name='Item2'), ... Item(name='Item3'), ... ]) [<Item: Item object>, <Item: Item object>, <Item: Item object>] >>> from django.db import connection >>> connection.queries [{'time': '0.007', 'sql': "INSERT INTO `item` (`name`) VALUES ('Item1'), ('Item2'), ('Item3')"}]