4 개의 데이터베이스에 연결할 사이트를 만들고 있습니다. 처음 세 개는 아무런 문제가 없습니다. 각 db에 대해 별도의 응용 프로그램을 만든 다음 각각에 대해 라우터를 만들었습니다. 마지막 db의 문제점은 라우터가 트리거하지 않는다는 것입니다. 트래픽을 기본 db로 계속 보냅니다. 기본 db는 app2이고 사용하고자하는 db는 'Login'입니다.Django DB Router가 올바른 테이블 대신 기본값 DB로 테이블을 전송합니다.
다음DATABASE_ROUTERS = ['reports.dbrout.CucRouter', 'reports.dbrout.CpsgRouter', 'reports.dbrout.LoginRouter', ]
이 바로 DB에 연결되지 않은 '로그인'응용 프로그램에서 모델 : 여기 여기 내 설정 선언 내 라우터
class LoginRouter(object):
def db_for_read(self, model):
if model._meta.app_label == 'Login':
return 'Login'
return 'default'
입니다.
from __future__ import unicode_literals
from django.db import models
class TblUsers(models.Model):
userid = models.AutoField(db_column='userID', primary_key=True)
username = models.CharField(db_column='userName', max_length=100)
useremail = models.CharField(db_column='userEmail', unique=True, max_length=100)
userpass = models.CharField(db_column='userPass', max_length=100)
userstatus = models.CharField(db_column='userStatus', max_length=1)
tokencode = models.CharField(db_column='tokenCode', max_length=100)
companyid = models.CharField(db_column='companyID', max_length=255, blank=True, null=True)
fk_customer = models.IntegerField(blank=True, null=True)
is_admin = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'tbl_users'
app_label = 'Login'
def __str__(self):
return str(self.userid)
전체 dbrout 페이지 :
class CucRouter(object):
def db_for_read(self, model):
if model._meta.app_label == 'CUCMCDR':
return 'CUCMCDR'
return 'default'
class CpsgRouter(object):
def db_for_read(self, model):
if model._meta.app_label == 'CPSG':
return 'CUCMCDR'
return 'default'
class LoginRouter(object):
def db_for_read(self, model):
if model._meta.app_label == 'Login':
return 'Login'
return 'default'
나는 이것이 처음 세 근무 말했듯이. 내가 여기에서 놓치게되는 것은 마지막 하나를 위해 붙잡지 않고있다!? ???
CucRouter
전에 다음LoginRouter
가 처리 할LoginRouter
및CucRouter
에 사용되는 경우는, 주문 확인 설정하는 동안. db_for_read 메소드에 전달할 모델의 선언을 포함시킬 수 있습니까? –예 지금 편집 중이므로 – Joe
DATABASE_ROUTERS 시퀀스가 중요하므로 먼저 reports.dbrout.LoginRouter를 추가 한 다음 시도하십시오. 그것이 효과가 있을지 모른다. – Sanjay