January 16, 2021
←前回:Day 10 データベースのマイグレーション
#今後の方針
昨日Qiitaに日記としての投稿は相応しくないとの投稿を目にし、自分の中で納得できたため今後は限定公開で投稿していきます。
「Djangoを学びたい」とのことでありましたら[Day 1]Djangoの開発環境から読むことをおすすめします。
#はじめに
今回のテーマは「初期データの投入」です。データベースに予めデータを入れておきたいケースは珍しくないと思います。今回はカテゴリ情報の初期データを投入してみます。
#fixturesファイルの準備
フィクスチャを使ったデータ投入にはfixturesファイルを作り、それを読み込む作業によって行います。fixturesファイルはJSON,YAML,XMLの形式で書くことが出来ます。今回は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
形が少し気持ち悪いですが、入っていることは確認できました。
#おわりに
今回から限定公開にしました。
日記として書いているので、これからも限定公開にしていくと思います。
それではまたまた