0

私はdjango1.3を使用しています.app_idmod_0〜ap_idmod_999のような1000のデータベースにデータを入れたいと思っていました. 今、設定を変更しました。

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と、テーブルが作成されません。なぜ?どうすれば動作させることができますか?

4

1 に答える 1

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
于 2011-08-04T06:45:09.433 に答える