2011-08-04 67 views
0

我使用django1.3,想將我的數據放入1000個數據庫,比如app_idmod_0〜ap_idmod_999。 現在我改變了我的設置。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個數據庫的可能用途。除非你是Facebook,我懷疑。

其次,您將每個實例設置爲相同的字典,因此當您在下一次迭代中更改名稱時,以前的名稱也會發生更改。在更改字典之前,您需要複製字典。

最後,這是怎麼回事__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