在專案目錄下的__init__.py檔案中,新增
import pymysql
pymysql.install_as_mysqldb()
然後修改settings.py檔案中的databases為:
databases =
}
物件--關係--對映(極大的減輕了工作量,不需要因為資料庫的變更而修改**)
orm的任務是:
1、根據物件的型別生成表結構。2、將物件、列表的操作轉換為sql語句。3、將sql語句查詢到的結果轉化為物件、列表。
模型、屬性、表、欄位間的關係:乙個模型類在資料庫中對應一張表,在模型類中定義的屬性,對應該模型對照表中的乙個字段。
建立模型類 在models.py檔案中新增
from django.db import models
# create your models here.
class grades(models.model):
gname = models.charfield(max_length=20)
gdate = models.datetimefield()
ggirlnum = models.integerfield()
gboynum = models.integerfield()
isdelete = models.booleanfield()
def __str__(self):
return self.gname
class students(models.model):
sname=models.charfield(max_length=20)
sgender=models.booleanfield(default=true)
sage=models.integerfield(db_column='age')
scontend=models.charfield(max_length=20)
isdelete=models.booleanfield(default=false)
#設定關聯外來鍵
然後在終端執行python manage.py makemigrations 生成遷移檔案,然後執行python manage.py migrate 執行遷移。
類屬性:objects是manager型別的乙個物件,作用是與資料庫進行互動。當定義模型類是沒有指定管理器,則django為模型建立乙個名為objects的管理器。
自定義管理器manager類:模型管理器是django的模型進行與資料庫進項互動的介面,乙個模型可以有多個模型管理器。
作用:向管理器類中新增額外的方法、修改管理器返回的原始查詢集(重寫get_quertset()方法)
class studentsmanager(models.manager):
def get_queryset(self):
return super(studentsmanager,self).get_queryset().filter(isdelete=false)
建立物件:(有兩種方法)
方法1:在模型類中新增乙個類方法
方法2:在定義管理器中新增乙個類方法
查詢集表示從資料庫獲取的物件集合。查詢集可以有多個過濾器,過濾器就是乙個函式,基於所給的引數限制查詢的結果。
返回單個資料
get():返回乙個滿足條件的物件。如果沒有找到符合條件的模型物件,會引發「模型類.doesnotexist異常」,如果找到多個物件,也會引發「模型類.mutipleobjectreturned異常」
count():返回查詢集中的物件個數
first():返回查詢集中的第乙個物件
last():返回查詢集中的最後乙個物件
exists():返回查詢集中事都有資料,如果有返回true
限制查詢集:
查詢返回集列表,可以使用下標的方法進行限制,等同於sql語句中的limit語句。
例:list=students.objects.all()[0:5] #顯示前5條學生的資訊 (注意下標不能為負數)
字段查詢:
實現了sql中的where語句,作為方法filter()、exclude()、get()的引數
語法:屬性名稱__比較運算子=值
外來鍵:屬性名_id
比較運算子:
exact:判斷大小寫,對大小寫敏感 語法:filter(isdelete=false)
contains:判斷是否包含,對大小寫敏感。 語法:studentslist=students.objects.filter(sname__contasins='張')
startswith、endswith:判斷是否以value開頭、結尾,對大小寫敏感
語法:studentslist=students.objects.filter(sname__startswith='張')
前邊四個運算子,在前邊加上i,就不區分大小寫了。
isnul、isnotnul:判斷是否為空。
in:判斷是否包含在範圍內。 語法:studentslist=students.objects.filter(pk__in=[2,4,6,8,10])
gt:大於 gte:大於等於 lt:小於 lte:小於等於
語法:studentslist=students.objects.filter(sage__gt=20) 查詢年齡大於20歲的資訊。
數學學習筆記 函式
1.函式是將乙個物件轉換為另外乙個物件的規則,例如f x x2 2.其中x的取值被稱為輸入,結果被稱為輸出 3.所有輸入來自稱為定義域的集合,所有輸出來自稱為上域的集合 4.假設現在有兩個函式f,g,這兩個函式的規則一樣,且函式g的定義域小於f的定義域 我們可以說函式g是由限制f的定義域產生的 5....
數學學習筆記 函式
函式是將乙個物件轉換為另外乙個物件的規則,例如f x x2 f x x 2 f x x 2,其中x的取值被稱為輸入,結果被稱為輸出。所有輸入來自稱為定義域的集合,所有輸出來自稱為上域的集合。假設現在有兩個函式f ff,g gg,這兩個函式的規則一樣,且函式g gg的定義域小於f ff的定義域,我們可...
數學學習筆記3
求積性函式f字首和 考慮字首和為s,考慮另外乙個函式g sum n f g i sum n sum f d g frac sum ng d sum rfloor f i sum ng d s lfloor frac rfloor 於是對於乙個n,可以得到 g 1 s n sum n f g i su...