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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM