Django中如何实现数据库路由?

  虽然我们提供了数据库的信息,它知道怎么连接数据库,但问题是我们保存里面有很多模型,它不知道哪个模型存到哪个数据库。这就要求我们自己来指定,也就是我们自己来实现一个数据库路由。一个数据库路由是一个拥有4个方法的类,这四个方法是:

db_for_read(model, **hints)

  对于该model 用哪个数据库来读。

db_for_write(model, **hints)

  对于该model用哪个数据库来写。

allow_relation(obj1, obj2, **hints)

  是否允许两个对象关联到数据库。

allow_migrate(db, app_label, model_name=None, **hints)

  对于指定的app,是否允许对db这个数据库进行migrate

  打开routers.py文件,做如下配置:

    class SampleDBRouter(object):

def db_for_read(self, model, **hints):

if model._meta.label == 'multiDB.Logger':

return 'logs'  (如果是Logger'的模型,就返回logs的数据库。将信息存到lab2

elif model._meta.label == 'multiDB.LogUser':

return 'users'(如果是LogUser'的模型,就返回users的数据库。将信息存到lab1

return None

def db_for_write(self, model, **hints):

if model._meta.label == 'multiDB.Logger':

return 'logs'

elif model._meta.label == 'multiDB.LogUser':

return 'users'

return None

def allow_relation(self, obj1, obj2, **hints):

return True    (关联,存放到指定地方。)

def allow_migrate(self, db, app_label, model=None, **hints):

if model._meta.label == 'multiDB.Logger':

return db == 'logs'(如果模型是multiDB.Logger,数据库是logs,就可以迁徙)

elif model._meta.label == 'multiDB.LogUser':

return db == 'users'(如果模型是multiDB.LogUser,数据库是users,就可以迁徙)

return None

 

原文链接:http://www.maiziedu.com/wiki/django/server/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值