一、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類:classrouter:
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
',]
一主多從方案
classrouter:
def db_for_read(self, model, **hints):
"""讀取時隨機選擇乙個資料庫
"""import
random
return random.choice(['
db2', '
db3', '
db4'
])
def db_for_write(self, model, **hints):
"""寫入時選擇主庫
"""return
'default
'
分庫分表
classrouter:
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.關閉連線 物件關係對映 類 資料表 屬性 字段 ...