django資料庫讀寫分離

2021-09-14 08:42:27 字數 1767 閱讀 6994

settings.py檔案中資料庫配置:

--用sqlite3:

databases = ,

'db2': ,

}

--用mysql:

databases = ,

'db2':

}

python manage.py  makemigrations   

python manage.py migrate -- database db2 # 將default庫中的表結構同步到db2

- 手動讀寫分離

在檢視函式中,通過objects.using("default") 指定使用哪個庫

models.products.objects.using('default').create(name='小仙女', age=12)

return httpresponse('寫入成功')

- 自動讀寫分離

通過配置資料庫路由,來自動實現。

1. 新建myrouter.py檔案

class router:

def db_for_read(self, model, **kwargs): # db_for_read固定寫法,讀操作自動匹配

return 'default'

def db_for_write(self, model, **kwargs): # db_for_write固定寫法,寫操作自動匹配

return 'db2'

2.在settings.py中配置router

database_routers = ['myrouter.router',]
新建myrouter.py檔案

import random

class router:

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

return random.choices(['db1', 'db2', 'db3'])

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

return 'db'

settings.py中配置同上!!

只需要修改,新建的myrouter.py檔案

class router:

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

return 'db1'

return 'db2'

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

return 'db1'

return 'db2'

settings.py中配置同上!!

Django配置資料庫讀寫分離

對 的資料庫作讀寫分離 read write splitting 可以提高效能,在django中對此提供了支援,下面我們來簡單看一下。注意,還需要運維人員作資料庫的讀寫分離和資料同步。我們知道在django專案的settings中,可以配置資料庫,除了預設的資料庫,我在下面又加了乙個db2。因為是演...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...

資料庫讀寫分離

隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...