読者です 読者をやめる 読者になる 読者になる

Django1.4のバルクインサートを試す

Python Django

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')"}]

今まではがんばってSQLの文字列組み立ててたのよね。
これなら簡単に使えるしバッチ処理とかで活躍しそう。