MezzanineというDjangoでできたWordPressライクなCMSで遊んでいます。
DB接続周りでハマった話。
djangoなので、settingsのDATABASESにDB接続の設定を書けばいいと思った。
mezannineが用意しているsettingsに以下の記載がある。
DATABASES = {
"default": {
# Add "postgresql_psycopg2", "mysql", "sqlite3" or "oracle".
"ENGINE": "django.db.backends.",
# DB name or path to database file if using sqlite3.
"NAME": "",
# Not used with sqlite3.
"USER": "",
# Not used with sqlite3.
"PASSWORD": "",
# Set to empty string for localhost. Not used with sqlite3.
"HOST": "",
# Set to empty string for default. Not used with sqlite3.
"PORT": "",
}
}
ここを変えれば良さげなので、変えてみたんだけど、反映されなかった。
なぜだろう、と思って調べてたら、
settingsの下の方に以下の記載があった。
f = os.path.join(PROJECT_APP_PATH, "local_settings.py")
if os.path.exists(f):
import sys
import imp
module_name = "%s.local_settings" % PROJECT_APP
module = imp.new_module(module_name)
module.__file__ = f
sys.modules[module_name] = module
exec(open(f, "rb").read())
local_settingsがあったら、それを読み込むという設定。
そして、local_settingsの中にもDATABASESの設定があり、上書きされる仕様になっていた。
罠だった。