Djangoでsyncdb時にデータを挿入する
Djangoでモデルを作っていると、例えば性別などのデフォルトデータを挿入したいことがある。管理パネルを使えば簡単にデータを追加できるのだが、初期開発時にはデータベースを作りなおすことが多々あるので、初期化の度に手動でデータを挿入するのは少々手間になる。
そして、性別のような単純なデータであればいいのだが、都道府県のように数の多いものや、もっと複雑なデータは手動で入力するのは現実的ではない。
ということでDjangoにはfixtureというデータベースにデータを挿入する機構が用意されている。
開発のプロが教える標準Django完全解説―Webアプリケーションフレームワーク (デベロッパー・ツール・シリーズ)
- 作者: 増田泰,中居良介,露木誠,松原豊
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2008/06/19
- メディア: 単行本
- 購入: 13人 クリック: 196回
- この商品を含むブログ (46件) を見る
fixtureにてデータを挿入するのは簡単で、fixture自体も簡単に記述が行える。記述方法は「モデルに初期データを与える」を読んでいただけばわかるかと思うが、注意点としては翻訳が間違っているということ。
YAMLでfixtureを書く場合の拡張子は「.yml」ではなく「.yaml」になる。拡張子が間違っていると読み込まれないので注意。
そして、「manage.py syncdb」時にfixutreを自動的に実行するには、各アプリケーションディレクトリに「fixtures」というディレクトリを用意しておき、その中に初期化に使いたいfixtureを「initial_data.yaml」として用意しておく。YAMLでなくてもXMLでもJSONでもfixtureは記述できるが、例えばYAMLで記述する場合YAMLモジュールがインストールされていなければいけないので注意が必要になる。
例えばUbuntuでは以下でYAMLパッケージのインストールを行える。
$ sudo apt-get install python3-yaml
そしてファイルを用意している状態でsyncdbをすると、
Installed 4 object(s) from 1 fixture(s)
のような感じで自動的にfixtureを実行しデータの取り込みを行ってくれる。これは便利だ。
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (127件) を見る
パーフェクトPython (PERFECT SERIES 5)
- 作者: Pythonサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2013/03/05
- メディア: 大型本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (17件) を見る
- 作者: ビープラウド
- 出版社/メーカー: 秀和システム
- 発売日: 2012/03/26
- メディア: 単行本
- 購入: 6人 クリック: 765回
- この商品を含むブログ (27件) を見る
- 作者: Tarek Ziade,稲田直哉,渋川よしき,清水川貴之,森本哲也
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2010/05/28
- メディア: 大型本
- 購入: 33人 クリック: 791回
- この商品を含むブログ (91件) を見る