django 對各種資料庫提供了很好的支援, 包括: postgresql、 mysql、 sqlite 和 oracle, 而且為這些資料庫提供了統一的呼叫 api,這些 api 統稱為 orm 框架。 通過使用 django 內建的 orm 框架可以實現資料庫連線和讀寫操作。
orm 框架是一種程式技術,用於實現物件導向程式設計語言中不同型別系統的資料之間的轉換。
從效果上說,其實是建立了乙個可在程式語言中使用的"虛擬物件資料庫' ,通過對虛擬物件資料庫操作從而實現對目標資料庫的操作,虛擬物件資料庫與目標資料庫是相互對應的。
在 django 中,虛擬物件資料庫也稱為模型。通過模型實 現對目標資料庫的讀寫操作,實現方法如下:
配置目標資料庫資訊, 主要在 settings.py 中設定資料庫資訊。
通過模型在目標資料庫中建立相應的資料表。
在檢視函式中通過對模型操作實現目標資料庫的讀寫操作。
下面是setting.py檔案中的配置檔案(假定連線mysql)。
databases = ,
}
建立倆個模型乙個是產品分類表,乙個是產品資訊表。
# 建立產品分類表
class type(models.model):
id = models.autofield(primary_key=true)
type_name = models.charfield(max_length=20)
# 建立產品資訊表
class product(models.model):
id = models.autofield(primary_key=true) # type 中命名乙個名為 id 的字段,該字段的資料型別為整型並設 置為主鍵
name = models.charfield(max_length=50)
weight = models.charfield(max_length=20)
size = models.charfield(max_length=20)
type = models.foreignkey(type, on_delete=models.cascade)
定義好模型後,需要生成遷移檔案並執行使其生成資料表,
生成遷移檔案:
>python manage.py makemigrations
執行遷移檔案:
>python manage .py migrate
django為模型的資料劃分了多種不同的資料型別:
表字段說明models.autofield
缺省會生成乙個名為id的字段並為int型別
models.charfield
字串型別
models.booleanfield
布林型別
models.comaseparatedintegerfield
用逗號分割的整數型別
models.datefield
日期 cdate) 型別
models.datetimefield
日期 cdatetime) 型別
models.decimal
十進位制小數型別
models.emailfield
字串型別 (正規表示式郵箱)
models.floatfield
浮點型別
models.integerfield
整數型別
models.bigintegerfield
長整數型別
models. ip addressfield
字串型別 (ipv4正規表示式)
models.genericipaddressfield
字串型別 , 引數protocol可 以 是 : both、 ipv4和 ipv6, 驗證ip位址
models.nullbooleanfield
允許為空的布林型別
models.positivelntegerfield
正整數的整數型別
models.positivesmallintegerfied
小正整數型別
models.slugfield
包含字母、數字、下曲線和連字元的字串 , 常用於 url models
models.smailintegerfield
小整數型別, 取值範圍 (-32,768---+32,767 )
models.textfield
長文字型別
models.timefield
時間型別, 顯示時分秒hh:mm[:ss[.uuuuuu]]
models.urlfield
字串 , 位址為正規表示式
models.binaryfield
二進位制資料型別
django 提供的字段型別還會對資料進行正則處理和驗證功 能等,進一步完善了資料的嚴謹性。除了表字段型別之外, 每個表字段還可以設定相 應的引數,使得表字段更加完善。字段引數說明如表 :
引數說明
nuil
如為true, 欄位是可以為空
blank
如為true,設定在admin站點管理中新增資料時可允許空值
default
設定預設值
primary_key
如為true, 將字段設定成主鍵
db_column
設定資料庫中 的欄位名稱
unique
如為true, 將字段設定成唯一屬性, 預設為false
db_index
如為true, 為字段新增資料庫索引
verbose_name
在admin站點管理設定欄位的顯示名稱
related_name
關聯物件反向引用描述符,用於多表查詢 ,可解決乙個資料表有兩個外 一 鍵同時指向另乙個資料表而出現重名的問題
一對一。
一對多。
多對多。
Django 模型(資料庫)
1.新建專案和應用 django admin.py startproject learn models 新建乙個專案 cd learn models 進入到該項目的資料夾 2.新增應用 django.contrib.admin django.contrib.auth django.contrib.c...
Django模型資料庫配置
在虛擬開發環境中,安裝mysql的資料庫驅動mysqlclient pip install mysqlclient在項 的 settings.py 件中找到databases 配置項,將其資訊修改為 databases 屬性定義語法為 屬性 models.欄位型別 選項 屬性命名規則 autofie...
Django的資料庫 和 模型
安裝 pymysql包 安裝 mysql 客戶端 非必須 sudo pip3 install mysqlclient 建立 和 配置資料庫 建立資料庫 create database mywebdb default charset utf8 collate utf8 general ci 資料庫的配...