Dưới đây là những gì bạn sẽ có phải làm để đi.
1) Cập nhật cài đặt cho cơ sở dữ liệu bạn muốn sử dụng.
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/var/db/projectdb'
}
'db_app1': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/var/db/app1db'
}
'db_app2': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/var/db/app2db'
}
2) Đối với mỗi cơ sở dữ liệu, thực hiện một bộ định tuyến cơ sở dữ liệu đó sẽ định tuyến các truy vấn một cách thích hợp. Trong trường hợp của bạn, hãy triển khai trong từng ứng dụng. Lưu ý điều này nhiều hơn hoặc ít hơn được lấy từ tài liệu django.
app1.dbRouter.py
# DB router for app1
class App1DBRouter(object):
"""
A router to control app1 db operations
"""
def db_for_read(self, model, **hints):
"Point all operations on app1 models to 'db_app1'"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if model._meta.app_label == 'app1':
return 'db_app1'
return None
def db_for_write(self, model, **hints):
"Point all operations on app1 models to 'db_app1'"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if model._meta.app_label == 'app1':
return 'db_app1'
return None
def allow_relation(self, obj1, obj2, **hints):
"Allow any relation if a model in app1 is involved"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if obj1._meta.app_label == 'app1' or obj2._meta.app_label == 'app1':
return True
return None
def allow_syncdb(self, db, model):
"Make sure the app1 app only appears on the 'app1' db"
from django.conf import settings
if not settings.DATABASES.has_key('app1'):
return None
if db == 'db_app1':
return model._meta.app_label == 'app1'
elif model._meta.app_label == 'app1':
return False
return None
3) Cập nhật DATABASE_ROUTERS
trong settings.py
settings.py
DATABASE_ROUTERS = ['app1.dbRouter.App1DBRouter', 'app2.dbRouter.App2DBRouter']
lẽ có liên quan: http://stackoverflow.com/questions/ 7970872/how-to-use-a-khác nhau-cơ sở dữ liệu cho mỗi ứng dụng-dụ-in-django; https://docs.djangoproject.com/en/dev/topics/db/multi-db/ –