前提・実現したいこと
アプリ毎に、接続するデータベースを変えたいです。。。
((アプリ名がapp1のときはdb1、app2のときはdb2 それ以外はdb1))
app1のときは、問題無く接続できます。
app2のほうが接続できません。。。
【setting.py】
Django
1DATABASES = { 2 'db1': { 3 'ENGINE': '***', 4 'NAME': '***', 5 'USER': '***', 6 'PASSWORD': '***', 7 'HOST': '***', 8 'PORT': '***', 9 }, 10 'db2': { 11 'ENGINE':'sql_server.pyodbc', 12 'NAME':'test', 13 'USER':'user', 14 'PASSWORD':'******', 15 'HOST':'127.0.0.1', 16 'PORT':'****', 17 18 'OPTIONS':{ 19 'driver':'ODBC Driver 13 for SQL Server', 20 }, 21 } 22 23}
【dbrouter.py】
Django
1class Router(object): 2 3 def db_for_read(self, model, **hints): 4 if model._meta.app_label == "app1": 5 return None 6 if model._meta.app_label == "app2": 7 return "db2" 8 return "db1" 9 10 def db_for_write(self, model, **hints): 11 if model._meta.app_label == "app1": 12 return None 13 if model._meta.app_label == "app2": 14 return "db2" 15 return "db1" 16 17 def allow_relation(self, obj1, obj2, **hints): 18 if obj1._meta.app_label == "app1" and obj2._meta.app_label == "app1": 19 return None 20 if obj1._meta.app_label == "app2" and obj2._meta.app_label == "app2": 21 return "db2" 22 return "db1" 23 24 def allow_migrate(self, db, app_label, model=None, **hints): 25 if app_label == "app1": 26 return db == "db1" 27 if app_label == "app2": 28 return db == "db2" 29 else: 30 return db == "db1" 31
発生している問題・エラーメッセージ
manage.py inspectdb --database [DB名] をすると
モデル定義が一覧で出てくるので、setting.pyは間違っていないと思っています。。
となると、dbrouter.pyに不備があるのでしょうか。。。
備考
こういう、設定系の質問は回答が得られにくいかもしれないのですが、、
明らかに間違っている所などありましたら、教えてください。。。
回答1件
あなたの回答
tips
プレビュー