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代码解决RenderView窗口not found问题
Aug 28 Python
Python读取Word(.docx)正文信息的方法
Mar 15 Python
python如何实现内容写在图片上
Mar 23 Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
Python列表倒序输出及其效率详解
Mar 04 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
Mar 30 Python
Python使用plt.boxplot() 参数绘制箱线图
Jun 04 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
使用Python绘制台风轨迹图的示例代码
Sep 21 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
Python机器学习之PCA降维算法详解
May 19 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+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
使javascript也能包含文件
2006/10/26 Javascript
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
iis6+javascript Add an Extension File
2007/06/13 Javascript
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
Python函数调用追踪实现代码
2020/11/27 Python
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
小学毕业演讲稿
2014/04/25 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
公司档案管理制度
2015/08/05 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
超级详细实用的pycharm常用快捷键
2021/05/12 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang