Django ORM 資料庫設定和讀寫分離

2022-04-10 19:23:12 字數 2429 閱讀 1957

一、django的資料庫配置

(一)修改settings.py檔案關於資料庫的配置:

django預設使用sqlite:

# django預設的資料庫庫,sqlit配置

databases =

}

再新增乙個資料庫:仿照「default」的格式直接新增:

databases = ,

'db2': ,

}

注意:如果想要使用mysql,需要進行一下配置:

1. 編輯專案資料夾下的settings.py

databases = 

}

2. 編輯專案資料夾下的__init__.py : 由於mysql在django中預設驅動是mysqldb, 而該驅動不適用於python3, 因此,我們需要更改驅動為pymysql

# **實現:

import pymysql

pymysql.install_as_mysqldb()

3. 顯示sql語句 ,前面我們說了orm是高層的物件導向的操作,轉換為低層的sql語句,如果想在終端列印對應的sql語句,可以在setting.py中加上日誌記錄

**實現:

logging = ,

},'loggers': ,}}

(二)、修改好資料庫配置之後,在models.py檔案裡建立表,之後進行資料庫遷移工作:

python manage.py makemigrations  # 在migrations資料夾下生成記錄,遷移前檢查

python manage.py migrate # 真正執行資料庫遷移命令,該命令執行之後建立表

二、讀寫分離

(一)手動讀寫分離

1. 在使用資料庫時,通過.using(db_name)來手動指定要使用的資料庫

優點:不需要進行其餘的配置,只需要通過.using(db_name)來手動指定要使用的資料庫就行。

缺點:在大量的對資料庫進行操作之後,此種方法繁瑣

# **實現

models.products.objects.using('default').create(prod_name='熊貓公仔', prod_price=12.99)

return httpresponse('寫入成功')

(二)自動讀寫分離

通過配置資料庫路由,來自動實現,這樣就不需要每次讀寫都手動指定資料庫了。資料庫路由中提供了四個方法。這裡這裡主要用其中的兩個:def db_for_read()決定讀操作的資料庫,def db_for_write()決定寫操作的資料庫。

定義router類

新建myrouter.py指令碼,定義router類:

class router:

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

return 'db2'

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

return 'default'

配置router

settings.py中指定database_routers

database_routers = ['myrouter.router',]
一主多從方案

class router:

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

"""讀取時隨機選擇乙個資料庫

"""import random

return random.choice(['db2', 'db3', 'db4'])

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

"""寫入時選擇主庫

"""return 'default'

分庫分表

class router:

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

return 'db1'

return 'db2'

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

return 'db1'

**

Django ORM 資料庫設定和讀寫分離

一 django的資料庫配置 一 修改settings.py檔案關於資料庫的配置 django預設使用sqlite django預設的資料庫庫,sqlit配置 databases 再新增乙個資料庫 仿照 default 的格式直接新增 databases db2 如果想要使用mysql,需要進行一下...

Django ORM資料庫操作

django框架功能齊全自帶資料庫操作功能,由於工作中設計巨量的api介面,需要乙個很好的web後端服務框架,django給了莫大的幫助。本文主要介紹django的orm框架 我們一般對資料庫的使用的認識是 django的orm操作本質上會根據對接的資料庫引擎,翻譯成對應的sql語句 所有使用dja...

django ORM 資料庫連線配置

django 中連線資料,可以使用pymysql 也可以使用django 自帶的框架orm 用pymysql連線mysql資料庫查詢資料 1.import pymysql 2.建立連線 3.獲取游標 4.執行sql語句 5.獲取資料 6.關閉游標 7.關閉連線 物件關係對映 類 資料表 屬性 字段 ...