DjangoシェルとPythonを使って複数のレコードをデータベースに一括挿入する

ページネーションなどのフロントサイドのパーツが正常に動いているか目視で確認したいなぁと思い、ダミーのレコードをデータベースに流し込むことにしました。

一つずつ挿入するのは大変なので、スクリプトを作って100個ほどスパーンと一気に流し込みます。

スクリプトの作成

manage.py と同じ場所に適当な名前で次のようなPythonファイルを作りました。

forループで100個ほど情報を生成し、対象のDBのレコードに流し込む単純なスクリプトです。

from django.contrib.auth import get_user_model
from wantedly_app.models import Profile
User = get_user_model()

def insert_user_records():
    for i in range(1, 100):
        username = f'mob_user{i}'
        email = f'mob_user{i}@super.mobuser.mail.com'
        password = 'hogehoge'
        u = User.objects.create_user(username, email, password)
        u.profile.gender = 'male'
        u.profile.birth_date = '2000-01-01'
        u.save()

Djangoシェルでスクリプトを実行

Djangoシェルを起動して、先ほど作成したスクリプトをインポートすると、勝手にレコードを挿入してくれます。

python manage.py shell
>>> from insert_records import *

まとめ

大量のレコード挿入もこれで楽チンです。やったね!

しかし1件ずつレコードsave()しているので、処理が重たいです。バルクインサートができないか調べてみます。