AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

Django の ER図 出力 が 2ステップで出来た

Django では、Modelの定義を行う事でデータベースは定義は自動的に作成されます。

Modelの定義をキチンと理解していれば ER図なくてもでしょうが、DBMSで操作をしちゃいたい時(僕の場合)等にER図があると便利だと思い探してみました。

見つけてしまえば、たった2ステップ。簡単ですね(開発者に感謝!です)


(2018/05/15 追記) 出力される図はER図とは違うようですので、改めて最新の手順とともにエントリーを書きました。kennyさん、ご指摘ありがとうございます。 ->
Django で Model の グラフ図を出力 - AWS / PHP / Python ちょいメモ


環境

手順

先述の環境が動作してる前提で、次のコマンドをたたく。

$ sudo apt-get install python-django-extensions graphviz python-pygraphviz

導入したいプロジェクトの settings.py に Appを追加する。名前がアンダースコアなのに注意(ハイフン書いたら動かなかった人>僕)。

INSTALLED_APPS = (
    ...
    'django_extensions',
)

ER図を出力。 -a : all-applications , -g : group-models といったオプションです。

$ python manage.py graph_models -a -g -o er.png

出力オプション

ちなみに出力ファイル名のところを変えると 画像:png, jpg の他、ベクターsvg , PDF:pdf , HTML:plain も出力できました。その他、こんな拡張子のファイルがだせるようです。

Use one of: canon cmap cmapx cmapx_np dot eps fig gd gd2 gif gv imap imap_np ismap jpe jpeg jpg pdf pic plain plain-ext png pov ps ps2 svg svgz tk vml vmlz vrml wbmp x11 xdot xdot1.2 xdot1.4 xlib

Graphviz - Graph Visualization Software でサポートするものなら、なんでもいけるのかな?便利ですね。


動作確認メモ

上手く動作しない場合には、次の出力がでるかを確認

$ python manage.py
...
[django_extensions]
...
    find_template
    generate_secret_key
    graph_models
    mail_debug
    notes
...

$ python manage.py help graph_models
Usage: manage.py graph_models [options] [appname]

Creates a GraphViz dot file for the specified app names.  You can pass multiple
app names and they will all be combined into a single model.  Output is usually
directed to a dot file.

Options:
  -v VERBOSITY, --verbosity=VERBOSITY
...

その他

ちなみに django-extensions は、以前(2009年ぐらいまで) django-command-extensions というプロジェクトだったようですね。

沢山の便利なツールが集まっているようなので、他も理解して活用したいです。