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の設定があり、上書きされる仕様になっていた。
罠だった。