我一直在尝试在Django1.3上设置我的项目以使用多个数据库,在我的例子中使用不同的sqlite3文件。我一直在阅读Django文档以及很多谷歌搜索但是徒劳无功。
面临的问题
我的代码
的 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']
dbrouter.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
感谢大家的时间。
答案 0 :(得分:2)
使用db_for_read
和db_for_write
方法
if model._meta.app_label == 'app1':
return 'app1db'
return None
您必须根据app1
返回数据库别名settings.DATABASES
。您的allow_syncdb
方法存在类似问题。你看过the docs吗?