使用【Django】的loaddata命令将示例数据加载到数据库中(插入初始数据)的方法
总结
-
- Djangoでは、python manage.py loaddataコマンドを使用してfixturesデータをデータベースにロードできます。
- これは初期データ投入時に使えます。今回は実際にやってみたので、本記事ではその方法を解説します。
执行步骤 (shí
fixturesディレクトリ内のJSONファイルを作成します。
JSONであれば、ファイル名は必ず.json拡張子で終わる必要がありますが、JSONのほか、XMLやYAML形式でも書くことができます。
フィクスチャ (fixture) とは、 テストや開発のためのサンプルデータを含むファイルです。Django のデータベースに投入できるよう準備済みのデータの集まりのことです。Djangoでは、フィクスチャを使用してアプリケーションの初期状態を構築することができます。アプリケーションの開発やテストに欠かせない便利なツールです。
今回は、事前にマイグレーションはしてある前提とします。
python manage.py loaddataコマンドを使用して、fixturesデータをデータベースにロードします。例えば、以下のように実行します。
$ python manage.py loaddata sample_data.json
Installed 10 object(s) from 1 fixture(s)
sample_data.jsonの前にfixutresのパスを明示的に書いても良いですが、Djangoがloaddataコマンドを実行する際に、アプリケーションのフィクスチャディレクトリを自動的に検索します。
実行後に、正常にロードされていれば、Installed…と表示されます。
複数のjsonファイルがあれば、スペースで連続させることもできます。
$ python manage.py loaddata hoge_data.json foo_data.json
在Django的管理界面上如何进行确认
-
- アプリ側で確認できるよう実装されていればそこから確認してもOKですし、DBクライアントソフトから確認するでもOKですが、djangoでは管理画面からロードされたデータを表示することができます。
Djangoの管理画面とは:Webブラウザを使用してデータベースの内容を閲覧・編集するためのユーザーインターフェース
Djangoのプロジェクトにアクセスし、管理画面にログインします。URLはadminをつけてあげればアクセスできます。
admin画面で見る場合、models.pyとadmin.pyには以下のような記載が必要です。
from django.db import models
class Movie(models.Model):
title = models.CharField(max_length=100)
director = models.CharField(max_length=100)
released_date = models.DateField()
def __str__(self):
return self.title
from django.contrib import admin
from .models import Movie
admin.site.register(Movie)
- admin画面にアクセスすると、以下のように表示されているはずです。

-
- モデルの管理ページで、特定のレコードを表示するには、レコードをクリックします。これにより、レコードの詳細ページが表示されます。
-
- と言うことで簡単に初期データをロードできるのがいいですよね。fixturesディレクトリには、アプリケーションの初期状態を表すフィクスチャが含まれていて初期状態を再現するために使用されると覚えておくと、今後も利用することが多そうです。
-
- Djangoでいうフィクスチャは、Ruby on Railsでいう「seedデータ(seeds.rb)と似ていますね。
以前に書いた記事はこちら:【Ruby on Rails】seedとseed_fuの違い・CSVファイルで読み込ませる方法
loaddataと逆で、DBに格納されているデータをダンプしておくコマンドdumpdataもあります。
参考記事:DjangoでDBに格納したデータをダンプ(バックアップ)させる【dumpdata】