2011-08-04 3 views
0

저는 django1.3을 사용하고 있습니다. 내 데이터를 app_idmod_0 ~ ap_idmod_999와 같은 1000 개의 데이터베이스에 저장하려고했습니다. 이제 설정을 변경했습니다.django settings.py 및 다중 데이터베이스 도움말

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'myapp',      # Or path to database file if using sqlite3. 
     'USER': 'root', 
     'PASSWORD': 'root', 
     'HOST': '',      # Set to empty string for localhost. Not used with sqlite3. 
     'PORT': '3306',      # Set to empty string for default. Not used with sqlite3. 

    },  
} 
myapp = DATABASES['default'] 
DB_MOD = 1000 
for i in xrange(0, DB_MOD): 
    myapp.__setitem__('NAME', 'myapp_idmod_' + str(i)) 
    DATABASES.__setitem__('myapp_idmod_' + str(i), myapp) 

작동하지 않습니다. manage.py syncdb --database=myapp_idmod_0을 사용할 때 테이블을 만들지 않습니다. 왜 작동시킬 수 있습니까?

답변

0

처음에는 에 1000 개의 데이터베이스를 사용할 수있는 것을 상상할 수 없습니다. 당신이 페이스 북이 아니라면, 나는 의심 스럽다.

둘째, 각 인스턴스를 동일한 사전으로 설정하므로 다음 반복에서 이름을 변경하면 이전 이름도 변경됩니다. 사전을 변경하기 전에 복사해야합니다.

마지막으로, __setitem__으로 무엇이이 망할 것입니까? 왜 정상적인 방법으로 사전 값을 설정하지 않습니까?

for i in xrange(DB_MOD): 
    db_dict = myapp.copy() 
    db_dict['NAME'] = 'myapp_idmod_' % i 
    DATABASES['myapp_idmod_%s' % i] = db_dict 
+0

감사합니다. 내 잘못입니다. – user877783

관련 문제