web開發——3.資料模型概念
1-1 主要內容
資料庫相關回顧
資料型別的概念
資料型別的定義
資料型別的查詢【單表查詢】
1-2 課程內容
1. 複習回顧
1.1. 概念整理回顧
a. Django有什麼樣的開發優勢? Django以其高效的開發效率著稱,作為實現了MVT處理模式的web框架,內建封裝好的資料模型的ORM高效操作、強大的模板支援、高效能的快取處理、完善的管理後臺以及封裝的高階表單處理,成為了作為web開發使用的首選框架。 [開發效率、內建功能、為什麼為選擇] |
b. 什麼是MVC處理模式?什麼是MVT處理模式? MVC是一種程式設計思想,是一種文體的處理模式,注重文體的處理過程;主要由三部分組成,負責資料封裝的資料模型Model MVT也是一種程式設計思想,是從MVC的基礎上衍生出來的,目前是Django中特有的一種處理模式,在Django中將控制器Controller單純的分發功能封裝成了路由進行操作,在MVT的三個組成部分中將網頁檢視和模板語法單獨封裝成了網頁模板Template,將接受請求的處理函式封裝成了檢視處理函式views,將要處理的資料封裝成了資料模型 |
c. Django的檔案結構和專案結構分別指代的是什麼?表現出來什麼方式? 檔案結構指代的是專案的檔案組成方式,專案結構指代的是專案的整體構架方式 檔案結構表現出來就是在Django專案中,有根專案資料夾、子模組應用資料夾,其中的檔案組成分別有不同的方式,根專案資料夾中主要有專案本身資訊相關的檔案,子模組應用中主要是專案功能相關的檔案 專案結構主要是實現了MVT處理模式的一種組成結構,通過根專案來管理所有的子模組應用的方式來架構整個專案結構 |
d. 什麼是虛擬環境?虛擬環境有什麼操作的意義? 虛擬環境就是一個單獨的封閉的環境,這個封閉的開發環境是完全獨立的不受其他環境影響的,通過建立一個虛擬環境,可以在當前虛擬環境中進行獨立的專案操作 虛擬環境存在的意義主要是因為在實際專案開發過程中,經常會遇到不同的開發環境在同一臺電腦上共存的情況,通過建立多個封閉的虛擬環境,來達到不同的專案同時在不同的環境中進行開發操作的實現! |
e. 開發過程中遇到了什麼難以解決的問題?說說你的解決思路? |
1.2. 資料庫複習回顧
學習過的資料庫:mysql\mongdb\redis
會操作的資料庫:mysql\redis
mysql為例:主要的操作的方式
3個建立
建立(刪除)資料庫
建立(刪除)資料表[table-relation(關係)]
n 建立(刪除)資料
l 4條語句
增insert
刪delete
改update
查select
單表
單條件
多條件(並且/或者)
內連線[自連線]
多表
關聯查詢
l 外連線
n 左外連線/右外連線
l 5種約束
n 主鍵|外來鍵|唯一|預設|檢查
l 資料物件
n 資料庫|資料表|約束|索引|檢視|序列|過程|程式包|觸發器|資料字典|事務..
2. 資料模型的定義
l web概述——基礎鋪墊
l Django快速入門——學會使用Django來進行專案處理 | MVT | 控制器[路由]
l Django資料模型Model[單個型別操作]
l Django資料模型Model[多個型別關聯操作]
l Django檢視模板[View | Template]
n 網頁檢視的處理[View | Template]
n 網頁靜態檔案操作[View一部分]
n 模板語法操作[Template一部分]
2.1. 資料模型Model
l 軟體的三層結構
看完上圖:理解~軟體的核心——處理資料
軟體介面[檢視]資料(使用者輸入)à 後端 將介面上的資料 建立物件 封裝
後端【物件】資料 à 資料庫 資料
l 程式中的物件和資料庫中的資料的對應關係
程式 |
資料庫 |
專案mysite |
某個具體的資料庫 mysite |
型別 class author |
資料表 table[author] |
型別 屬性[attribute] |
資料欄位 列[column] |
物件 某個具體的物件 object |
一行資料 記錄[recorder] |
l ORM操作
ORM是一種程式設計思想,一種處理模式,一種將程式中的物件和資料庫中的資料進行對映關聯的程式設計處理方式
ORM:Object[物件] Relation[關係/表] Mapping[對映]
ORM操作的核心:可以在程式中,進行物件的增刪改查,同時在增刪改查的過程中,直接操作資料庫中的資料!
2.2. Django連線資料庫
1) 常見的資料庫操作
l 常見的資料庫
n 關係型資料庫:sqlite/mysql/sql server/oracle/db2
n 非關係型資料[NoSQL:not only sql]:mongdb\redis\memcache…
l 使用最多還是關係型資料庫
n 資料庫的搭建
u 開發環境:主要是方便開發使用安裝的資料庫
l 可以是小型資料庫、可以不穩定、可以丟失資料…
l 目的:測試程式功能
u 生產環境:主要是為了給程式提供完整的資料儲存安裝的資料庫
l 針對性的資料庫
l 通常情況下,資料庫會單獨部署一個伺服器[資料庫伺服器]
開發環境的資料庫搭建(mysql):
l 快速、方便、可用
l 官方網站下載資料庫安裝包——完整安裝資料庫[常用]
l 安裝第三方的整合工具,專案需要的各種功能都具備了wamp/xampp
n wamp:w web | a apache | m mysql | p php
n xampp: a apache | m mysql | p php | p perl
2) Django連線資料庫
連線資料庫是一種專案操作,這樣的操作方式,一般通過配置的方式直接實現即可!
通過修改settings.py配置檔案來連線指定的資料庫
Django預設支援mysqldb模組的資料庫連線
mysqldb不支援新版本的python~
pymysql完成的資料庫連線
1. 要使用pymysql完成資料庫連線,要通過指定使用mysqldb的方式進行操作
2. 通過配置DATABASES來完成和資料庫之間的連線
import pymysql pymysql.install_as_MySQLdb() .. DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.mysql’, ‘NAME’: ‘py1709’, ‘USER’: ‘root’, ‘PASSWORD’: ‘’ } } |
3) 定義模型類
定義一個作者型別
class Author(): ... |
為了保障讓我們定義的型別,交給Django進行自動管理,需要繼承django.db.models.Model型別
為了讓Django能管理我們定義的型別建立的物件,所有的屬性,通過Django內建的方法進行建立
from django.db import models class Author(models.Model): id = models.AutoField(primary_key=True) … |
4) 同步資料庫
l 根據定義的型別,自動生成sql語句
python manage.py makemigrations |
l 檢視生成的sql語句
python manage.py sqlmigrate <name> <no> |
l 執行sql語句
python manage.py migrate |
階段小總結:Django資料模型操作 1) 建立Django專案,以及專案中的子模組應用 [將子模組應用新增到settings.py中的INSTALLED_APPS配置中] 2) 配置Django連線資料庫 通過配置settgins.py配置檔案,兩步操作 (1) 引入pymysql,並且pymysql.install_as_MySQLdb() (2) 配置DATABASES選項,指定要連線的資料庫[參考官方文件] 3) 定義模型類 模型類不能定義在根專案中[根專案主要職責是管理整個專案] 模型類要定義在對應的子模組應用中 模型類必須繼承django.db.models.Model型別 模型類的屬性,必須使用Django提供的方法來定義,如models.CharField() 目的:讓Django負責管理我們定義的型別 4) 資料庫同步 定義完模型類之後,執行生成指定資料庫的sql執行語句 python manage.py makemigrations [可選]檢視生成的sql語句 python manage.py sqlmigrate [子模組名稱] [sql編號] 執行sql語句,同步資料庫 python manage.py migrate |
Djnago資料模型操作 |
1. 環境準備 python3.5+ | Django1.11.+ | pymysql |
2. 建立專案以及子模組應用 根專案中不要建立資料模型 將子模組應用註冊到根專案中[主路由子路由關係包含 | INSTALLED_APPS配置] |
3. Django連線資料庫 [引入pymysql] [DATABASES配置] |
4. 定義資料模型 |
5. 根據DATABASES指定的資料庫,生成對應的SQL語句 |
6. 根據生成的SQL語句,執行SQL |
l 瞭解Django中對於資料物件的操作方式[瞭解]
n 增、刪、改、查
n 命令列介紹
l Django中物件本身的資料操作[瞭解]
n 增、刪、改、查
n 程式碼操作
l Django中的物件管理器[掌握]
n 增、刪、改、查
n 程式碼操作
n 物件管理器:針對管理的物件進行增刪改查操作
1. Django中物件的操作——第一種方式,通過物件的objects屬性操作
l Django的命令列
專案在操作過程中,Django主要是進行web開發,專案在通過伺服器啟動之後才能通過瀏覽器進行測試;Django提供了一個強大的命令列操作,可以直接在命令列中進行程式碼的除錯
啟動Django命令列:python manage.py shell
l Django對於物件本身,提供了一個objects屬性,通過這個屬性,可以對物件進行資料的增刪改查操作
User型別à User.objectsà 增刪改查User物件
l Django專案在通過runserver的方式啟動之後,是熱載入的
n 熱載入:在修改程式碼之後,修改的資料會自動同步到伺服器中不需要重啟伺服器!
n 缺陷:[1載入時間不確定2部分內容不一定載入成功]
n 技術提高~的最快方式——實踐、即使是犯錯,也是一種最佳的實踐,只有出錯才能知道什麼是正確的方式!
l 專案中很少使用這樣的方式[極端情況下,會有人嘗試這樣使用~我們知道並認識這樣的操作即可,但是不推薦這樣的程式設計!]
l 通過python manage.py shell進入命令列,可以通過命令列進行測試[重要]
l 通過型別的objects屬性,對該型別的物件進行增刪改查操作【不推薦:瞭解】
n all()/filter()/save()/update()/delete()..
l 通過型別的objects屬性的操作,在程式程式碼中的使用
n 直接引入models模組中的物件,通過物件的objects屬性直接操作[不推薦:瞭解]
2. 通過物件內部新增類方法——完成物件的增刪改查操作[不推薦:瞭解]
3. 通過物件管理器——管理物件資料的增刪改查
管理器物件,對管理的物件的操作:增刪改查
總結:
通過一個較為完整的專案,回顧複習練習熟悉三天的Django內容
l 使用者資訊管理系統
n 檢視所有使用者
n 刪除使用者
n 修改使用者
n 增加使用者
專案結構
|-- user_management/
|-- user_managerment/
|-- userinfo/
|-- manage.py
專案模型類:
|-- UserInfo
|-- id編號
|-- name 姓名
|-- age 年齡
|-- birthday 生日
同步資料庫
功能開發
l 首頁檢視所有使用者
l 首頁檢視所有使用者—刪除使用者
l 增加使用者[POST引數傳遞]
l 修改使用者[POST引數傳遞]
總結:
l 核心_操作!
l 重點
n 理解 Django專案中資料型別的定義
n 理解 Django對資料型別物件的管理[高度封裝]
n 理解 Django物件管理器[為什麼有物件,還要多個物件管理器]
n 操作[掌握]:專案小案例(使用者列表的檢視)
n 操作[瞭解]:專案小案例(使用者資料的刪除)