2011-08-04 5 views
0

は、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個のデータベースの可能性があります。あなたが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

関連する問題