djangoのModelをコンソールプログラムで使用する方法

pythonのWebアプリケーションフレームワークdjangoでは、RDBの表をModelというクラスの形で表現できる。

Modelを使用すると、いちいちSQLを書かなくてもRDB上のデータのCRUD処理が簡単に行えるので便利だ。

このModelクラスをバッチ処理などのコンソールプログラムから使用したくても、単純に、目的のModelクラスをインポートするだけでは使用できない。

しかし、少し設定をすれば、コンソールプログラムからModelクラスを使用できることが最近分かった。

それには、コンソールプログラムの先頭に次のような記述を書きくわえればよい。

import sys, os
sys.path.append("djangoプロジェクトの配置場所")
os.environ["DJANGO_SETTINGS_MODULE"] = "プロジェクト名.settings"
import プロジェクト名.モデルの場所 as models

ここで、

  • djangoのプロジェクトのインストールの場所は「/home/user/django/project」
  • settings.pyの場所はデフォルトの「/home/user/django/project/settings.py」
  • Modelクラスの記述ファイルの場所は「/home/user/django/project/app/models.py」

とすると、下のように記述すればよい。

import sys, os
sys.path.append("/home/user/django/")
os.environ["DJANGO_SETTINGS_MODULE"] = "project.settings"
import project.app.models as models


この記述を先頭に書きくわえると、この場合ではmodels.ModelクラスXXXという形で、「home/user/django/project/app/models.py」にて定義しているModelクラスをコンソールプログラムから使用することができる。


参考リンク:
ソースページ:Using Django in command-line scripts
ソースページを紹介していたブログ:Pyro Memo