【发布时间】:2018-02-26 14:25:37
【问题描述】:
在某些特定条件下,我们如何在 Django 上使用多个数据库,例如,
1. 一个 DB 仅用于写入目的 (db_for_write.sqlite3)
2.另外两个用于阅读目的的数据库(read_replica_1.sqlite3,read_replica_2.sqlite3)
3. 所有这 3 个 DB 应始终同步(3 个 DB 应始终包含相同的数据)
4、CRUD、migration等所有动作都独立于app或model
这是我的 Db_Router.py
import random
class ExampleDatabaseRouter(object):
def db_for_read(self, model, **hints):
db_list = ('db_for_read_1', 'db_for_read_2')
return random.choice(db_list)
def db_for_write(self, model, **hints):
return 'db_for_write_only'
def allow_relation(self, obj1, obj2, **hints):
# I couldn't understand what would do this method
return
def allow_migrate(self, db, app_label, model_name=None, **hints):
# sync all DB
return
不幸的是,我无法理解allow_relation() 方法的目的。我希望有人可以帮助我。
【问题讨论】:
-
您找到解决方案了吗?
标签: django django-orm multiple-databases django-database