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

2022-05-09 22:19:28 字數 2765 閱讀 1882

一、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)來手動指定要使用的資料庫就行。

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

#

**實現

熊貓公仔

寫入成功')

(二)自動讀寫分離

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

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

class

router:

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

return

'db2

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

return

'default

'

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''

:

return

'db2

'

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.關閉連線 物件關係對映 類 資料表 屬性 字段 ...