Django 第十課 1 ORM模型

2022-08-30 00:09:30 字數 2017 閱讀 8732

orm模型介紹

隨著專案的越來越大,採用寫原生sql的方式在**中會出現大量的sql語句,那麼問題就出現了:

1:sql語句重複利用率不高,越複雜的sql語句條件越多,**越長。會出現很多相近的sql語句

2:很多sql語句是在業務邏輯中拼出來的,如果有資料庫需要更改,就要去修改這些邏輯,這會很容易漏掉對某些sql語句的修改

3:寫sql時容易忽略web安全問題,給未來造成隱患。如,sql注入

1:易用性:使用orm做資料庫的開發可以有效的減少重複sql語句的概率,寫出的模型也更加直觀,清晰。

2:效能損耗小:orm轉換成底層資料庫操作指令確實會有一些開銷。但是從實際的情況看,這種損耗很少(不足5%),只要不是對效能有嚴苛的要求,綜合考慮開發效率,**的閱讀性,帶來的好處要遠遠大於效能損耗,而且專案越大作用越明顯。

3:設計靈活:可以輕鬆的寫出複雜的查詢

4:可移植性:django封裝了底層的資料實現,支援多個關聯式資料庫引擎,包括流行的mysql,postgresql和sqlite。可以非常輕鬆的切換資料庫

建立orm模型

from django.db import

models

#如果要將乙個普通的類變成乙個可以對映到資料庫中的orm模型

#那麼必須要將父類設定為models.model或者他的子類

class

book(models.model):

#1. id:int型別,是自增長的

id = models.autofield(primary_key=true)

#2. name:varchar(100)。圖書名字

name = models.charfield(max_length=100, null=false)

#3. author:varchar(100)。作者名字

author = models.charfield(max_length=100, null=false)

#4. price:float。**

price = models.floatfield(null=false, default=0)

class

publisher(models.model):

name = models.charfield(max_length=100, null=false)

address = models.charfield(max_length=100, null=false)

#終端進入專案目錄,進行虛擬環境

#1. 使用makegrations

#python manage.py makemigrations

#2. 使用migrate將新生成的遷移指令碼檔案對映到資料庫中

#python manage.py migrate

以上便定義了乙個模型。這個模型繼承自 『django.db.models.model』,如果這個模型想要對映到資料庫中,就必須繼承自這個類,這個模型以後對映到資料庫中,表名是模型名稱的小寫形式,為『book』。在這個表中,有四個字段,如上。

##  對映模型到資料庫中:

將『orm』模型對映到資料庫中,總結起來就是以下幾步:

(django-env) macminidemac-mini:orm_intro_demo nelsen$ python manage.py makemigrations 

#生成指令碼檔案

migrations 

for'

book

': book/migrations/0001_initial.py -create model book (django-env) macminidemac-mini:orm_intro_demo nelsen$ python manage.py migrate

#將遷移指令碼檔案對映到資料庫中

operations to perform:

第十課學習

按鍵在未按下時,處於一種高電平狀態,一般這種情況下,其對io口的電平一致,則不會產生任何效果,只有在按下狀態時,由於與接地的迴路貫通,故相當於微控制器的io口直接接地。從原理圖上看,之所以要接keyin1 keyin4外接至按鍵中,主要原因是為了獲取按鍵的狀態,因為我們只能獲取微控制器的io口狀態,...

第十課 邊框

無邊框 border style none 虛線邊框 border style dotted 虛線邊框 border style dashed 實線邊框 border style solid 雙邊框 border style double 凹槽邊框 border style groove 壟狀邊框 ...

第十課 函式

第十課 函式 一.定義函式 def 函式名 引數1,引數2,文件描述 函式體return 值 def 定義函式的關鍵字 函式名 函式名指向函式記憶體位址,是對函式體 的引用。函式的命名應該反映出函式的功能 括號 括號內定義引數,引數是可有可無的,且無需指定引數的型別 冒號 括號後要加冒號,然後在下一...