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 MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 Python
使用Python将Mysql的查询数据导出到文件的方法
Feb 25 Python
python格式化输出保留2位小数的实现方法
Jul 02 Python
Python中新式类与经典类的区别详析
Jul 10 Python
pandas如何处理缺失值
Jul 31 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
Python如何在DataFrame增加数值
Feb 14 Python
django-csrf使用和禁用方式
Mar 13 Python
一文带你了解Python 四种常见基础爬虫方法介绍
Dec 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
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php网站地图生成类示例
2014/01/13 PHP
ThinkPHP模板IF标签用法详解
2014/07/01 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
使用jQuery.Pin垂直滚动时固定导航
2017/05/24 jQuery
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
JS+jQuery实现注册信息的验证功能
2017/09/26 jQuery
jquery.picsign图片标注组件实例详解
2018/02/02 jQuery
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
Django处理文件上传File Uploads的实例
2018/05/28 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
西尔斯百货官网:Sears
2016/09/06 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
行政助理的职责
2013/11/14 职场文书
英文推荐信格式范文
2014/05/09 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书