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判断windows系统是32位还是64位的方法
May 11 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
回调函数的意义以及python实现实例
Jun 20 Python
python 垃圾收集机制的实例详解
Aug 20 Python
Python使用装饰器进行django开发实例代码
Feb 06 Python
python使用锁访问共享变量实例解析
Feb 08 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
python对html过滤处理的方法
Oct 21 Python
FFrpc python客户端lib使用解析
Aug 24 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
php数据库配置文件一般做法分享
2012/07/07 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
php解析xml方法实例详解
2015/05/12 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
php while循环控制的简单实例
2016/05/30 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
angularJs复选框checkbox选中进行ng-show显示隐藏的方法
2018/10/08 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
python动态加载包的方法小结
2016/04/18 Python
Python实现的桶排序算法示例
2017/11/29 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
什么是WEB控件?使用WEB控件有哪些优势?
2012/01/21 面试题
师范生自荐信
2013/10/27 职场文书
2014年情人节活动方案
2014/02/16 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL