【发布时间】:2011-11-06 23:29:09
【问题描述】:
我一直在尝试在 Django1.3 上设置我的项目以使用多个数据库,在我的情况下是不同的 sqlite3 文件。我一直在阅读 Django 文档以及大量谷歌搜索但徒劳无功。
面临的问题
- 当使用带有 --database 的 syncdb 时,为什么该特定应用程序的表没有在默认数据库或其他 db 中创建?
- 正在为所有提到的数据库创建 Django 框架内部表(如 auth)。这是该功能应有的行为方式还是我错误地配置了相同的方式?
我的代码
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(SITE_ROOT, "db/defaultdb.sqlite"),
},
'app1': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(SITE_ROOT, "db/app1db.sqlite"),
}
}
DATABASE_ROUTERS = ['dbrouter.MyAppRouter']
drouter.py
class MyAppRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == 'app1':
return 'app1db'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == 'app1':
return 'app1db'
return None
def allow_syncdb(self, db, model):
if db == 'app1db':
return model._meta.app_label == 'app1'
elif model._meta.app_label == 'app1':
return False
return None
感谢大家的宝贵时间。
【问题讨论】:
标签: django django-models