1. 程式人生 > 資訊 >SK 創新將與 Solid Power 聯合開發和生產電動汽車用固態電池

SK 創新將與 Solid Power 聯合開發和生產電動汽車用固態電池

模型層 - 定義

  • 回顧Django MTV

  • 模型層 - 負責跟資料庫之間進行通訊

Django配置mysql

  • 安裝 mysqlclient【版本 mysqlclient1.3.13以上,官網目前為1.4.x】
  • 安裝前確認 ubuntu 是否已安裝 python3-dev 和 default-libmysqlclient-dev
    • sudo apt list --installed|grep -E 'libmysqlclient-dev|python3-dev'
    • 若命令無輸出則需要安裝 - sudo apt-get install python3-dev default-libmysqlclient-dev
  • pip install mysqlclient(安裝是在Pycharm中的Terminal中安裝)
  • 建立資料庫
  • 進入mysql資料庫 執行
    • create database 資料庫名 default charset utf8;
    • 通常資料庫名跟專案名保持一致
  • settings.py裡進行資料庫的配置
    • 修改DATABASES配置項的內容,由 sqlite3 變為 mysql
# 在Terminal中進入mysql建立資料庫:

mysql -uroot -p
create database mysite3 default charset utf8;
# 在 settings.py檔案中78行
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mysite3', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': '3306' } }
  • ENGINE - 指定資料庫儲存引擎
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle
' 'django.db.backends.postgresql'
  • NAME - 指定要連線的資料庫的名稱
  • USER - 指定登入到資料庫的使用者名稱
  • PASSWORD - 資料庫的名稱
  • HOST/PORT - 連線具體資料庫的IP和埠

什麼是模型

  • 模型是一個Python類,它是由Django.db.models.Model派生出的一個子類(即要求必須繼承於Django.db.models.Model。繼承了這個類,class就是模型)
  • 一個模型類代表資料庫中的一張資料表
  • 模型類中每一個類屬性都代表資料庫中的一個欄位
  • 模型是資料庫互動的介面,是表示和操作資料庫的方法和方式

ORM框架

  • 定義:ORM (Object Relational Mapping) 即物件關係對映,它是一種程式技術,它允許你使用類和物件對資料庫進行操作,從而避免通過SQL語句操作資料庫。
  • 作用:
    • 建立模型類和表之間的對應關係,允許我們通過面向物件的方式來操作資料庫。
    • 根據設計的模型類生成資料庫中的表格。
    • 通過簡單的配置就可以進行資料庫的切換。
  • 優點:
    • 只需要面向物件程式設計,不需要面向資料庫編寫程式碼。
      • 對資料庫的操作都轉化成對類屬性和方法的操作。
      • 不用編寫各種資料庫的sql語句
    • 實現了資料模型與資料庫的解耦,遮蔽了不同資料庫操作上的差異。
      • 不在關注用的是mysql、oracle...等資料庫的內部細節。
      • 通過簡單的配置就可以輕鬆更換資料庫,而不需要修改程式碼。
  • 缺點
    • 對於複雜業務,使用成本較高。
    • 根據物件的操作轉換成SQL語句,根據查詢的結果轉化成物件,在對映過程中有效能損失。
  • 對映圖

模型類 - 建立

from django.db import models
class 模型類名(models.Model):
    欄位名 = models.欄位型別(欄位選項)

模型示例

  • 此示例為新增一個bookstore_book資料表來存放圖書館中書目資訊

1. 新增一個bookstore的app

python manage.py startapp bookstore

2. 新增模型類並註冊app

# file : bookstore/models.py
from django.db import models

class Book(models.Model):
    title = models.CharField("書名",max_length=50,default='')
    # CharField表示字串型別欄位
    price = models.DecimalField('定價',max_digits=7,decimal_places=2,default=0.0)
    # DecimalField引數(最大數目的數字,儲存小數位數的號碼)
    # 即 一共7位數,小數點在從右往左第二位 00000.00,即最高為萬元
# 在settings.py檔案中新增:

INSTALLED_APPS = [
    ...
    'bookstore',
]

3. 資料庫遷移

  • 遷移是Django同步您對模型所做更改(新增欄位,刪除模型等)到您的資料庫模式的方式
    • 生成遷移檔案 - 執行python manage.py makemigrations
      將應用下的models.py檔案生成一箇中間檔案,並儲存在migrations資料夾中
    • 執行遷移指令碼程式 - 執行python manage.py migrate
      執行遷移程式實現遷移。將每個應用下的migrations目錄中的中間檔案同步回資料庫

此時檢視資料表,發現本來的空表現在已經同步了所有的檔案表到資料庫,包括剛剛建立的bookstore_book表,檢視所有欄位,有class中的所有屬性(欄位):