settings.py檔案中資料庫配置:
--用sqlite3:
--用mysql:databases = ,
'db2': ,
}
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檔案
2.在settings.py中配置routerclass 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'
database_routers = ['myrouter.router',]
新建myrouter.py檔案
settings.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'
只需要修改,新建的myrouter.py檔案
settings.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'
Django配置資料庫讀寫分離
對 的資料庫作讀寫分離 read write splitting 可以提高效能,在django中對此提供了支援,下面我們來簡單看一下。注意,還需要運維人員作資料庫的讀寫分離和資料同步。我們知道在django專案的settings中,可以配置資料庫,除了預設的資料庫,我在下面又加了乙個db2。因為是演...
資料庫讀寫分離
隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...
資料庫讀寫分離
隨著乙個 的業務不斷擴充套件,資料不斷增加,資料庫的壓力也會越來越大,對資料庫或者sql的基本優化可能達不到最終的效果,我們可以採用讀寫分離的策略來改變現狀。讀寫分離現在被大量應用於很多大型 這個技術也不足為奇了。ebay就做得非常好。ebay用的是oracle,聽說是用 quest share p...