2011-08-30 3 views
2

내 프로젝트에 Django1.3을 설치하여 여러 데이터베이스를 사용하려고했습니다. 내 경우에는 다른 sqlite3 파일입니다. 난 장고 문서뿐만 아니라 많은 검색하지만 헛되이 읽고있다. 특정 응용 프로그램에 대한 테이블이 기본 데이터베이스 나 다른 DB를 하나로 만들어지고하지 않는 이유 --database와 syncdb를 사용하는 경우Django : sqlite3을 사용하여 여러 데이터베이스 설정

문제

  1. 에 직면?
  2. auth와 같은 Django 프레임 워크 내부 테이블이 언급 된 모든 데이터베이스에 대해 생성됩니다. 이 기능이 동작하는 방식입니까 아니면 잘못 구성 했습니까?

내 코드

settings.py

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(SITE_ROOT, "db/defaultdb.sqlite"), 
    }, 
    'app1': { 
      'ENGINE': 'django.db.backends.sqlite3', 
      'NAME': os.path.join(SITE_ROOT, "db/app1db.sqlite"), 
    } 
} 

DATABASE_ROUTERS = ['dbrouter.MyAppRouter'] 

dbrouter.py

class MyAppRouter(object): 
    def db_for_read(self, model, **hints): 
     if model._meta.app_label == 'app1': 
      return 'app1db' 
     return None 

    def db_for_write(self, model, **hints): 
     if model._meta.app_label == 'app1': 
      return 'app1db' 
     return None 

    def allow_syncdb(self, db, model): 
     if db == 'app1db': 
      return model._meta.app_label == 'app1' 
     elif model._meta.app_label == 'app1': 
      return False 
     return None 

감사 EV를 에리네. 당신의 db_for_readdb_for_write 방법에서

답변

2

,

if model._meta.app_label == 'app1': 
    return 'app1db' 
return None 

당신은 당신의 settings.DATABASES에 따라 app1 인 DB 별칭을 반환해야합니다. allow_syncdb 메소드에도 비슷한 문제가 있습니다. the docs을 읽으셨습니까?

관련 문제