Django從頭學 學習筆記4

2021-08-27 11:36:27 字數 3129 閱讀 6695

在專案目錄下的__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...