最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django中常用的查詢數(shù)據(jù)方法及查詢對(duì)象的條件詳解

 更新時(shí)間:2021年09月03日 14:22:23   作者:孤寒者  
在web 開(kāi)發(fā)過(guò)程中,Django 與后臺(tái)數(shù)據(jù)庫(kù)的交互是必不可少的一項(xiàng),也是實(shí)現(xiàn)業(yè)務(wù)邏輯所需數(shù)據(jù)的重要方式,這篇文章主要給大家介紹了關(guān)于Django中常用的查詢數(shù)據(jù)方法及查詢對(duì)象條件的相關(guān)資料,需要的朋友可以參考下

(1)常用的查詢方法:

1.獲取所有記錄:

s = User.objects.all()

2.獲取第一條數(shù)據(jù):

s = User.objects.first()

3.獲取最后一條數(shù)據(jù):

s = User.objects.last()

關(guān)于二、三兩個(gè)方法注意點(diǎn):

對(duì)于QuerySet對(duì)象,我們也是可以通過(guò)下標(biāo)取值獲取對(duì)應(yīng)的實(shí)例對(duì)象。如下所示——雖然這兩個(gè)方法作用一致(獲取到對(duì)應(yīng)的實(shí)例對(duì)象),但是推薦使用(而且一般使用的)都是first()方法及l(fā)ast()方法。

原因——如果查詢的數(shù)據(jù)不存在的話,使用下標(biāo)查詢會(huì)報(bào)錯(cuò);但是使用first()方法不會(huì)報(bào)錯(cuò),會(huì)返回None。

s = User.objects.filter(age=18).first()     #獲取QuerySet中的第一條數(shù)據(jù)
s2 = User.objects.filter(age=18).last()     #獲取QuerySet中的最后一條數(shù)據(jù)
s = User.objects.filter(age=18)[0]
print(s)

應(yīng)用場(chǎng)景:

a = User.objects.get(id=56)             #使用get方法獲取一個(gè)實(shí)例對(duì)象,我們可以保證id不會(huì)重復(fù),但是不能保證id為56的數(shù)據(jù)是否存在
#但是使用.first()方法哪怕它不存在也不會(huì)報(bào)錯(cuò)!
a = User.objects.filter(id=56).first()

4.根據(jù)參數(shù)提供的條件獲取過(guò)濾后的記錄:

【注意:filter(**kwargs)方法:根據(jù)參數(shù)提供的提取條件,獲取一個(gè)過(guò)濾后的QuerySet】

s = User.objects.filter(name= "xiaoming" )	# 過(guò)濾得到name為xiaoming的數(shù)據(jù)

5.排除name為xiaoming的數(shù)據(jù):

s = User.objects.exclude(name='xiaoming')

6.獲取一個(gè)記錄對(duì)象:

【注意:get返回的對(duì)象具有唯一性質(zhì),如果符合條件的對(duì)象有多個(gè),則get報(bào)錯(cuò)!】

s = User.objects.get(name = "xiaoming" )

7.對(duì)結(jié)果排序:

#根據(jù)age升序排序:
c = User.objects.all().order_by("age")
#根據(jù)age逆向排序:
c2 = User.objects.all().order_by("-age")
#雙重排序:age升序排序,如果有age相同的則以id升序排序:
c3 = User.objects.all().order_by("age","id")

8.將返回的QuerySet中的Model轉(zhuǎn)換為字典:

s = User.objects.all().values()
#作用:現(xiàn)在是字典形式了(之前的QuerySet是類似于列表的對(duì)象),就可以使用字典的方法進(jìn)行獲取數(shù)據(jù)了:
print(s[0].get("name"))

QuerySet對(duì)象格式:

<QuerySet [<User: name:taka, age:18>, <User: name:xiaopo, age:18>, <User: name:xiaohong, age:18>]>

使用values()方法轉(zhuǎn)變后的格式:

<QuerySet [{'id': 1, 'name': 'taka', 'age': 18}, {'id': 2, 'name': 'xiaopo', 'age': 18}, {'id': 3, 'name': 'xiaohong', 'age': 18}]>

9.獲取當(dāng)前查詢到的數(shù)據(jù)的總數(shù):

e = User.objects.count()	 # (所有QuerySet對(duì)象都可以使用此方法)

(2)常用的查詢對(duì)象的條件:

查找對(duì)象的條件的意思是傳給以上方法的一些參數(shù)。相當(dāng)于是SQL語(yǔ)句中的where語(yǔ)句后面的條件,語(yǔ)法為字段名__規(guī)則!

1.exact相當(dāng)于等號(hào):(以下兩種方法作用一致!)

rs = User.objects.filter(name__exact='xiaoming')
rs = User.objects.filter(name='xiaoming')

2.iexact:跟exact差不多,只是忽略大小寫(xiě)的匹配。

3.contains 包含:

rs = User.objects.filter(name__contains='xiao')     #查詢name屬性值中包含xiao的

4.icontains跟contains差不多,只是忽略大小寫(xiě)。

5.startwith 以什么開(kāi)始:

rs = User.objects.filter(name__startswith='xiao')  # 查詢name屬性值以xiao開(kāi)頭的

6.istartwith跟startwith差不多,只是忽略大小寫(xiě)。

7.endwith 以什么結(jié)尾:。

8.isendwith跟endwith差不多,只是忽略大小寫(xiě)。

9.in 成員所屬:

rs = User.objects.filter(age__in=[18,19,20])  # 查詢age值為18,19,20的數(shù)據(jù)

10.gt大于

rs = User.objects.filter(age__gt=20)  # 查詢age值大于20的數(shù)據(jù)

11.gte 大于等于。

12.lt 小于。

13.lte 小于等于。

14.range 區(qū)間,包含兩頭。

rs = User.objects.filter(age__range=(18,20))  # 查詢age值在18-20之間的數(shù)據(jù)(包含18和20)

15.isnull 判斷是否為空。

總結(jié)

到此這篇關(guān)于Django中常用的查詢數(shù)據(jù)方法及查詢對(duì)象的條件的文章就介紹到這了,更多相關(guān)Django查詢數(shù)據(jù)方法及條件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Django+uwsgi+Nginx上線最佳實(shí)戰(zhàn)

    詳解Django+uwsgi+Nginx上線最佳實(shí)戰(zhàn)

    這篇文章主要介紹了Django+uwsgi+Nginx上線最佳實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Python Queue模塊詳細(xì)介紹及實(shí)例

    Python Queue模塊詳細(xì)介紹及實(shí)例

    這篇文章主要介紹了Python Queue模塊詳細(xì)介紹及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 詳解python之異步編程

    詳解python之異步編程

    這篇文章主要為大家介紹了python之異步編程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2021-12-12
  • 簡(jiǎn)單實(shí)現(xiàn)Python爬取網(wǎng)絡(luò)圖片

    簡(jiǎn)單實(shí)現(xiàn)Python爬取網(wǎng)絡(luò)圖片

    這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)Python爬取網(wǎng)絡(luò)圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • python實(shí)現(xiàn)下載指定網(wǎng)址所有圖片的方法

    python實(shí)現(xiàn)下載指定網(wǎng)址所有圖片的方法

    這篇文章主要介紹了python實(shí)現(xiàn)下載指定網(wǎng)址所有圖片的方法,涉及Python針對(duì)頁(yè)面的讀取、遍歷及文件操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • Python中的圖像處理之Python圖像平滑操作

    Python中的圖像處理之Python圖像平滑操作

    本文主要介紹在Python中調(diào)用OpenCV庫(kù)對(duì)圖像進(jìn)行圖像平滑濾波處理與圖像加噪處理,如雙邊濾波,高斯雙邊濾波,圖像加隨機(jī)噪聲等操作,對(duì)Python圖像平滑操作感興趣的朋友一起看看吧
    2022-06-06
  • python使用 zip 同時(shí)迭代多個(gè)序列示例

    python使用 zip 同時(shí)迭代多個(gè)序列示例

    這篇文章主要介紹了python使用 zip 同時(shí)迭代多個(gè)序列,結(jié)合實(shí)例形式分析了Python使用zip遍歷迭代長(zhǎng)度相等與不等的序列相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • python使用pyqt寫(xiě)帶界面工具的示例代碼

    python使用pyqt寫(xiě)帶界面工具的示例代碼

    本篇文章主要介紹了python使用pyqt寫(xiě)帶界面工具的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 使用python和Django完成博客數(shù)據(jù)庫(kù)的遷移方法

    使用python和Django完成博客數(shù)據(jù)庫(kù)的遷移方法

    下面小編就為大家分享一篇使用python和Django完成博客數(shù)據(jù)庫(kù)的遷移方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • 探索Python?Furl高性能URL構(gòu)建解析和操作功能實(shí)例

    探索Python?Furl高性能URL構(gòu)建解析和操作功能實(shí)例

    本文將提供關(guān)于Python?Furl的全面指南,包括安裝和配置、基本概念、URL解析、URL構(gòu)建、查詢參數(shù)操作、片段處理、實(shí)際應(yīng)用場(chǎng)景以及豐富的示例代碼
    2024-01-01

最新評(píng)論

尼玛县| 长子县| 建宁县| 中卫市| 招远市| 九寨沟县| 江油市| 屏山县| 晋宁县| 磴口县| 千阳县| 承德县| 渑池县| 齐河县| 临沧市| 莱西市| 鹿邑县| 赤城县| 宾阳县| 瓦房店市| 昭通市| 哈巴河县| 怀化市| 道真| 鲁甸县| 弋阳县| 宣恩县| 中西区| 旬阳县| 柳林县| 文山县| 宜都市| 南汇区| 化隆| 禹州市| 栾川县| 广安市| 奉新县| 雅江县| 体育| 澎湖县|