Python Django2 model 查詢介紹(條件、范圍、模糊查詢)
條件查詢
范圍查詢
模糊查詢
條件查詢
all()
返回全部結(jié)果集
filter(**kwargs)
返回滿足參數(shù)定義的結(jié)果集 例如
Entry.objects.filter(pub_date__year=2006)
exclude(**kwargs)
返回不滿足參數(shù)定義的結(jié)果集 例如
Entry.objects.exclude(pub_date__year=2006)
鏈式查詢
Entry.objects.filter(... headline__startswith='What'... ) .exclude(... pub_date__gte=datetime.date.today()... ) .filter(... pub_date__gte=datetime.date(2005, 1, 30)... )
也可以這樣
q1 = Entry.objects.filter(headline__startswith="What") q2 = q1.exclude(pub_date__gte=datetime.date.today()) q3 = q1.filter(pub_date__gte=datetime.date.today())
或者
q = Entry.objects.filter(headline__startswith="What") q = q.filter(pub_date__lte=datetime.date.today()) q = q.exclude(body_text__icontains="food") get()
filter()返回的是一個結(jié)果集,如果你確定你要返回的是一條結(jié)果,那么就可以使用get() 例如
Entry.objects.get(pk=1)
get()與filter()區(qū)別
get()返回單一的一條記錄,返回類型也是一個對象,filter()返回的實際一個結(jié)果集,返回類型為列表。
使用get(),如果查詢結(jié)果為空,將會引起DoesNotExist exception,而filter()將會返回[]
范圍查詢
Limiting Entry.objects.all()[:5]
將會返回前5條記錄
Entry.objects.all()[5:10]
將會返回5~10條記錄
order_by
排序
Entry.objects.order_by('headline')[0]
將會按照'headline'進行排序,然后返回第一條記錄
語法:字段 + 兩條下劃線 + 內(nèi)置查詢字段
lt(lte): 小于(小于等于)
Entry.objects.filter(pub_date__lte='2006-01-01')
等同于
SELECT * FROM ... WHERE pub_date <= '2006-01-01';
gt(gte): 大于(大于等于)
in
Entry.objects.filter(id__in=[1,3])
模糊查詢
range
常用來篩選出屬于某個連續(xù)區(qū)間的對象
Entry.objects.filter(id__range=[1,3]) contains
包含‘xxx'(大小寫敏感),常用于找出包含某些關(guān)鍵字的對象
Entry.objects.filter(type__name__contains='python')
等同于
SELECT ... WHERE name LIKE '%python%';
類似的有icontains (大小寫不敏感)。注意contains是大小寫敏感的,icontains是大小寫不敏感的。
startswith
以‘xxx'開頭(大小寫敏感)
Entry.objects.filter(name__startswith='高級')
等同于
SELECT ... WHERE name LIKE '高級%';
類似的有istartswith (大小寫不敏感)
endswith
以‘xxx'結(jié)尾(大小寫敏感)
類似的有iendswith (大小寫不敏感)
isnull
可設置為True或者False,用來篩選某字段 為NULL / 不為NULL 的對象
Entry.objects.filter(description__isnull=True)
等同
SELECT ... WHERE description IS NULL;
補充知識:Django filter **conditions多條件多字段過濾篩選數(shù)據(jù)
Application context 應用場景:
新增的一條數(shù)據(jù)不能與DB庫里有的數(shù)據(jù)重復或者需要多條件/多字段篩選數(shù)據(jù)時需要用到 **conditions
conditions ={ 'server_ip': ip, "bk_biz_id": bk_biz_id, 'cron_min': c["cron_min"], 'cron_hour': c["cron_hour"], 'cron_day': c["cron_day"], 'cron_month': c["cron_month"], 'cron_week': c["cron_week"], 'cron_task': c["cron_task"], "creator": c["user"], "deleted": 0 } query_set = CrontabInfo.objects.filter(**conditions)
以上這篇Python Django2 model 查詢介紹(條件、范圍、模糊查詢)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python從Oracle讀取數(shù)據(jù)生成圖表
這篇文章主要介紹了python如何從Oracle讀取數(shù)據(jù)生成圖表,幫助大家更好的利用python處理數(shù)據(jù),感興趣的朋友可以了解下2020-10-10Python+OpenCV實戰(zhàn)之利用?K-Means?聚類進行色彩量化
這篇文章主要介紹了如何利用?K-Means?聚類進行色彩量化,以減少圖像中顏色數(shù)量。文中的代碼具有一定的學習價值,感興趣的小伙伴可以關(guān)注一下2021-12-12Python實現(xiàn)多項式擬合正弦函數(shù)詳情
這篇文章主要介紹了Python實現(xiàn)多項式擬合正弦函數(shù)詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08