前言
Django默認自帶的ORM功能非常強大,調用執行的方法去查詢即可,不需要自己去寫SQL了。
常用參數
__exact 精確等於 like 'aaa'
__iexact 精確等於 忽略大小寫 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小寫 ilike '%aaa%',但是對於sqlite來說,contains的作用效果等同於icontains。
__gt 大於
__gte 大於等於
__lt 小於
__lte 小於等於
__in 存在於一個list範圍內
__startswith 以…開頭
__istartswith 以…開頭 忽略大小寫
__endswith 以…結尾
__iendswith 以…結尾,忽略大小寫
__range 在…範圍內
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False
__isnull=True 與 __exact=None的區別
實例
檢索特定的對象
使用以下兩個方法:
fileter(**kwargs)
返回一個與參數匹配的QuerySet,相當於等於(=).
exclude(**kwargs)
返回一個與參數不匹配的QuerySet,相當於不等於(!=)。
QuerySet方法
# 這是查找前5個entry表裡的數據
Entry.objects.all()[:5]
# 這是查找從第5個到第10個之間的數據。
Entry.objects.all()[5:10]
# 這是查詢從第0個開始到第10個,步長為2的數據。
Entry.objects.all()[:10:2]
# 模糊查詢
Entry.objects.get(headline__contains=’Lennon’)
Q對象的複雜查詢
Q(question__startswith=’Who’) | Q(question__startswith=’What’) Poll.objects.get(Q(question__startswith=’Who’), Q(pub_date=date(2018, 6, 1)) | Q(pub_date=date(2018, 6,4)) )
總結
人生苦短,我用Python!快速完成任務!
閱讀更多 linux運維菜 的文章