LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

[Day 11]初期データの投入

Last updated at Posted at 2021-01-16

January 16, 2021
←前回:Day 10 データベースのマイグレーション

今後の方針

昨日Qiitaに日記としての投稿は相応しくないとの投稿を目にし、自分の中で納得できたため今後は限定公開で投稿していきます。
「Djangoを学びたい」とのことでありましたら[Day 1]Djangoの開発環境から読むことをおすすめします。

はじめに

今回のテーマは「初期データの投入」です。データベースに予めデータを入れておきたいケースは珍しくないと思います。今回はカテゴリ情報の初期データを投入してみます。

fixturesファイルの準備

フィクスチャを使ったデータ投入にはfixturesファイルを作り、それを読み込む作業によって行います。fixturesファイルはJSON,YAML,XMLの形式で書くことが出来ます。今回はJSONで書いてみます。

thread/fixtures/thread/category_data.json
[
    {
        "model" : "thread.category",
        "pk" : 1,
        "fields" : {
            "name" : "WEB技術",
            "url_code" : "web_app",
            "sort" : 1
        }
    },
    {
        "model" : "thread.category",
        "pk" : 2,
        "fields" : {
            "name" : "モバイル",
            "url_code" : "mobile",
            "sort" : 2
        }
    },
    {
        "model" : "thread.category",
        "pk" : 3,
        "fields" : {
            "name" : "プログラミング",
            "url_code" : "programing",
            "sort" : 3
        }
    },
    {
        "model" : "thread.category",
        "pk" : 4,
        "fields" : {
            "name" : "OS関連・インフラ",
            "url_code" : "os",
            "sort" : 4
        }
    },
    {
        "model" : "thread.category",
        "pk" : 5,
        "fields" : {
            "name" : "業界ネタ・憩いの場",
            "url_code" : "chatter",
            "sort" : 5
        }
    }
]

YAML等でのも同様の構造であれば問題ありません。

データの投入

それでは早速投入していきましょう。Djangoがfixturesファイルを探すのはデフォルトでは各アプリケーションのfixturesフォルダです。以下のようなコマンドでロードします。

(venv)$ ./manage.py loaddata thread/category_data.json

これでデータが投入されました。
確認してみましょう。
ここで私はSQLiteを使用したいので、sqlite3コマンドを入力します。

(venv)mysite $ sqlite3 db.sqlite3

今回はdb.sqlite3でしたが名前がは異なる場合もあります。
これでsqliteに入れたので中身を確認していきます。


sqlite> select * from thread_category;

1|WEB技術|web_app|1
2|モバイル|mobile|2
3|プログラミング|programing|3
4|OS関連・インフラ|os|4
5|業界ネタ・憩いの場|chatter|5

形が少し気持ち悪いですが、入っていることは確認できました。

おわりに

今回から限定公開にしました。
日記として書いているので、これからも限定公開にしていくと思います。

それではまたまた

←前回:Day 10 データベースのマイグレーション
→次回:Day 12 管理画面と管理者の作成

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up