wiki:DjangoSettingsDatabasePath

Djangoのsettings.pyでDatabaseファイルのパスを指定する

DBとしてSQLite3を使っていて、DBファイルの場所をフルパスで指定しなきゃいけない場合。

import os.path
cwd = os.path.abspath(__file__)  # 念のため。
cwd = os.path.dirname(cwd)
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = os.path.join(cwd, 'db', 'myproject.sqlite3')

こんな感じでどうぞ。 上記の例では、プロジェクトディレクトリの下の「db」というディレクトリの中に「myproject.sqlite3」というDBファイルを作ります。 これなら、プロジェクトディレクトリの場所をどこに移してもsettings.pyをいじる必要が無いのでらくちんです。

デプロイの度に手でsettings.pyをいじるのってめんどいですよ。 ああ。どうせデプロイなんてそう何度もやるもんじゃないから手でいじる方が速いって? そんなんじゃ健全なハッカーには成れません。もっとめんどくさがり屋じゃないといけない。

設定方法をドキュメントに書いておくからだいじょぶだって? ほんとに毎回、完璧なドキュメントを書いてますか? デプロイごとに変更するべき場所が10カ所あったら? 僕にとっては、そんなことをいちいち説明する完璧なドキュメントを書くのがめんどい。 それくらいだったら、設定が少しでも減るようにコードを書く方がいい。

(2007/7/16 - sgk)