Django中如何實現資料庫路由?

2021-07-28 04:09:24 字數 1389 閱讀 4159

雖然我們提供了資料庫的資訊,它知道怎麼連線資料庫,但問題是我們儲存裡面有很多模型,它不知道哪個模型存到哪個資料庫。這就要求我們自己來指定,也就是我們自己來實現乙個資料庫路由。乙個資料庫路由是乙個擁有4個方法的類,這四個方法是:

db_for_read(model, **hints)

對於該model 用哪個資料庫來讀。

db_for_write(model, **hints)

對於該model用哪個資料庫來寫。

allow_relation(obj1, obj2, **hints)

是否允許兩個物件關聯到資料庫。 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    (關聯,存放到指定地方。)

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

Django中資料庫配置

在settings.py中儲存了資料庫的連線配置資訊,django預設初始配置使用sqlite資料庫。databases 使用mysql資料庫首先需要安裝驅動程式 pip install pymysql 在django的工程同名子目錄的 init py檔案中新增如下語句 from pymysql i...

Django如何連線mysql資料庫

sudo pip install mysql python顯示successfully installed mysql python 1.2.5 2 修改settings.py 配置資料屬性 如下 databases 修改完後進入專案目錄下執行python manage.py shell命令啟動互動...

Django實現資料庫長連線

開始接觸django只有乙個多月的時間,而且一開始完全是在修改別人的 乙個乙個問題的改,感覺沒怎麼自己沒太大的進步。最近來了乙個新的需求 讓django實現資料庫長連線 網上找了很多資料也沒找到說名django資料庫長連線的,django的文件也裡裡外外的找了一遍,可就是沒提到資料庫長連線的。於是開...