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中计算三角函数之cos()方法的使用简介
May 15 Python
Python中的getopt函数使用详解
Jul 28 Python
Python 如何访问外围作用域中的变量
Sep 11 Python
django的settings中设置中文支持的实现
Apr 28 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
python tkinter图形界面代码统计工具
Sep 18 Python
python中count函数简单的实例讲解
Feb 06 Python
Python使用docx模块实现刷题功能代码
Feb 13 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
Pycharm的Available Packages为空的解决方法
Sep 18 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
Python极值整数的边界探讨分析
Sep 15 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
用函数读出数据表内容放入二维数组
2006/10/09 PHP
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
set_include_path在win和linux下的区别
2008/01/10 PHP
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
2014/06/12 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
微信小程序实现购物页面左右联动
2019/02/15 Javascript
基于layui轮播图满屏是高度自适应的解决方法
2019/09/16 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
英国假发网站:Hothair
2018/02/23 全球购物
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
毕业生医学检验求职信
2013/10/16 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
幼儿学前班评语
2014/12/29 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android