Python Django2 model 查询介绍(条件、范围、模糊查询)


Posted in Python onMarch 16, 2020

条件查询

范围查询

模糊查询

条件查询

all()

返回全部结果集

filter(**kwargs)

返回满足参数定义的结果集 例如

Entry.objects.filter(pub_date__year=2006)

exclude(**kwargs)

返回不满足参数定义的结果集 例如

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()返回的是一个结果集,如果你确定你要返回的是一条结果,那么就可以使用get() 例如

Entry.objects.get(pk=1)

get()与filter()区别

get()返回单一的一条记录,返回类型也是一个对象,filter()返回的实际一个结果集,返回类型为列表。
使用get(),如果查询结果为空,将会引起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'进行排序,然后返回第一条记录

语法:字段 + 两条下划线 + 内置查询字段

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

常用来筛选出属于某个连续区间的对象

Entry.objects.filter(id__range=[1,3])
contains

包含‘xxx'(大小写敏感),常用于找出包含某些关键字的对象

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'结尾(大小写敏感)

类似的有iendswith (大小写不敏感)

isnull

可设置为True或者False,用来筛选某字段 为NULL / 不为NULL 的对象

Entry.objects.filter(description__isnull=True)

等同

SELECT ... WHERE description IS NULL;

补充知识:Django filter **conditions多条件多字段过滤筛选数据

Application context 应用场景:

新增的一条数据不能与DB库里有的数据重复或者需要多条件/多字段筛选数据时需要用到 **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 查询介绍(条件、范围、模糊查询)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的exec、eval使用实例
Sep 23 Python
Python常用随机数与随机字符串方法实例
Apr 09 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
TensorFlow实现模型评估
Sep 07 Python
Django安装配置mysql的方法步骤
Oct 15 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
Dec 15 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
Python Flask框架扩展操作示例
May 03 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
Python新手学习装饰器
Jun 04 Python
python高阶函数map()和reduce()实例解析
Mar 16 #Python
Django models filter筛选条件详解
Mar 16 #Python
python递归调用中的坑:打印有值, 返回却None
Mar 16 #Python
django 前端页面如何实现显示前N条数据
Mar 16 #Python
Python迭代器Iterable判断方法解析
Mar 16 #Python
python 递归调用返回None的问题及解决方法
Mar 16 #Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 #Python
You might like
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php如何获取文件的扩展名
2015/10/28 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
Js+XML 操作
2006/09/20 Javascript
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
在vue项目中引用Iview的方法
2018/09/14 Javascript
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python局部赋值的规则
2013/03/07 Python
wxPython学习之主框架实例
2014/09/28 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
Python Merge函数原理及用法解析
2020/09/16 Python
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
预备党员党课思想汇报
2014/01/13 职场文书
给分销商的致歉信
2014/01/14 职场文书
放弃继承权公证书
2015/01/23 职场文书
加薪申请报告范本
2015/05/15 职场文书
海洋天堂观后感
2015/06/05 职场文书
大学同学聚会感言
2015/07/30 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书