django查詢表數據是否存在


一.查詢函數

通過模型類.objects屬性可以調用如下函數,實現對模型類對應的數據表的查詢。 (這里objects是django為我們實現的一個模型管理類的對象)

(1)get

返回滿足條件的一條且只有一條數據。返回值是一個模型類的對象。

參數中寫查詢條件。

1)如果查到多條數據,則拋異常MultipleObjectsReturned。

2)查詢不到數據,則拋異常:DoesNotExist

***************注意*********************

用get查詢的時候,查詢不到內容的時候會拋出異常,同樣查詢結果多余1條的時候也會拋出異常。因此,不能使用get,而應該使用filter。

filer若是查詢不到數據,會返回一個空的查詢集,[]  type類型是:Queryset。

查詢到多余一條的時候會,還是會返回一個包含多個對象的查詢集。

所有用filter查詢到的是否為'[ ]'來判斷是否存在。

  a:

1
2
3
4
5
userinfo  =  Users.objects. filter (email  =  request.POST[ 'email' ])
if  userinfo.exists():
     print ( "yes,we have this email" )
else :
    print ( "sorry,email is not register" )

  b:可以使用count()這個方法,userinfo.count() =0的話表示不存在數據,大於0的話表示存在一條或多條。

  c:if uerinfo:..........else: .......

***************注意*********************

(2)all

返回模型類對應的表中所有的數據。返回的是一個Queryset集合。

(3)filter

返回滿足條件的數據,返回值是一個Queryset集合。

(4)exclude

返回不滿足條件的數據,返回值是一個Queryset集合。

(5)order_by

對查詢的結果進行排序,返回值是一個Queryset集合。

查詢條件格式

條件格式:

1

模型類屬性名__條件名=值

a)判等

條件名:exact。

可以省略。

b)模糊查詢

contains 包含

startwith 開頭 endwith 結尾

c)空查詢

isnull

d) 范圍查詢

in

e)比較查詢

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

f)日期查詢

year 年份

二.F對象

用於類屬性之間的比較。使用之前需要先導入:

1

   from django.db.models import F

二.Q對象

用於查詢時條件之間的邏輯關系。not and or,可以對Q對象進行~&|操作。 使用前應該先導入:

1

from django.db.models import Q

三.聚合函數

對查詢結果進行聚合操作。 sum count avg max min

(1)aggregate

調用這個函數來使用聚合。返回值是一個字典。

先要導入聚合類:

1

from django.db.models import Sum,Count,Max,Min,Avg

(2)count函數 返回值是一個數字.

他們是對查詢結果進行操作。

例如:

1

查詢結果.aggregate(Count(要統計的字段屬性))

關聯查詢

通過多類的條件查詢一類的數據:

1

一類名.objects.filter(多類名小寫__多類屬性名__條件名)

通過一類的條件查詢多類的數據:

1

多類名.objects.filter(關聯屬性__一類屬性名__條件名)

queryset查詢集

查詢集特性:

1)惰性查詢:只有在實際使用查詢集中的數據的時候才會發生對數據庫的真正查詢。

2)緩存:當使用的是同一個查詢集時,第一次使用的時候會發生實際數據庫的查詢,然后把結果緩存起來,之后再使用這個查詢集時,使用的是緩存中的。

可以用角標或者切片的方式來限制查詢值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM