【问题标题】:django settings.py and multi-database helpdjango settings.py 和多数据库帮助
【发布时间】:2011-08-04 03:40:22
【问题描述】:

我正在使用 django1.3,想将我的数据放入 1000 个数据库中,例如 app_idmod_0 ~ ap_idmod_999。 现在我改变了我的设置。

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,它没有表格。 为什么?我怎样才能让它工作?

【问题讨论】:

    标签: python django multi-database


    【解决方案1】:

    首先,我无法想象 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多