我正在使用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
,它没有表格。
为什么?我怎样才能使它有效?
答案 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