django之model中數據庫查詢

一. 數據的查詢和編輯

假如現在models.py中已經下面這個類,並且已經創建了相應的表

class Stu(models.Model):
    stu_id = models.CharField(max_length=20)  # 學號
    name = models.CharField(max_length=50, unique=True)  姓名
    password = models.CharField(max_length=50)  # 密碼
    age = models.IntegerField()  # 年齡
    email = models.CharField(max_length=50)  # 郵箱
    details = models.TextField()  # 詳細描述

 

filter()
# 返回指定條件的列表,若沒有匹配的信息,那就返回一個空列表

1. 查詢學號爲32的學生信息

stu_info = Stu.objects.filter(stu_id='32').first()

2. 查詢姓名爲張三,年齡爲18的學生

data = {
    "name": "張三",
    "age": "18"
}
stu_info = Stu.objects.filter(**data)

注意這兒傳入的參數,因爲是字典,所以要用**data表示,否則就會出錯

 

exclude()
# 返回不符合條件的QuerySet,列表類型

1. 返回年齡不等於18的學生

stu_info = Stu.objeects.exclude(stu_id="18")

 

order_by()
# 串接到QuerySet之後,針對某一字段進行排序

1. 根據學生的年齡排序

stu_list = Stu.objects.all().order_by('age')  # 根據年齡從小到大排序

stu_list = Stu.obj.all().order_by('-age')  # 根據年齡從大到小排序

 

all()
# 返回所有QuerySet

stu_inf = Stu.objects.all()  # 獲取表中所有的數據

 

get()
# 獲取指定符合條件的唯一元素,如果找不到或者有一個以上的符合條件,都會產生exception

stu_info = Stu.objects.get(age="18")  # 得到第一條數據

 

first()/last()
# 獲取第一個/最後一個元素

stu_info = Stu.objects.filter(age="18").first()

stu_info = Stu.objects.filter(age="18").last()

 

aggregate()
# 可以用來計算數據項的聚合函數

 

exists()
# 用來檢查是否存在某指令條件的記錄,通常附加在filter()後面

 

update()
# 更新數據庫的內容

Stu.objects.filter(name="李四").update(age="17")  # 將李四的年齡改爲17

 

delete()
# 刪除數據庫中的某項記錄

Stu.objects.filter(id=1).delete()  # 將id爲1的學生信息刪除

 

create()
# 創建記錄

data = {
    "name": "周某人",
    "age": "18",
    "email": "xxxxxxx"
}
Stu.objects.create(**data)  # 創建信息
# 相當於SQL語句中的如下語句
INSERT INTO stu (name, age, email) VALUES ("周某人", "18", "xxxxxxx");

 

iexact()
# 不區分大小寫的條件查詢

 

contains()/icontains()
# 設置條件爲含有某一字符串就符合,如SQL語句中的LIKE和ILIKE

 

in()
# 提供一個列表,只要符合列表中的任何一個值均可

 

gt/gte/lt/lte
# 大於/大於等於/小於/小於等於

stu_info = Stu.objects.filter(id__gt=2)  # 找出id大於2的所有記錄
注:這是django自帶的方法,不能寫id>2, 而是用id__gt=2。即字段+雙下劃線+大小+等於號

例如找出大於等於5的所有記錄
stu_info = Stu.objects.filter(id__gte=5)


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章