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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
Python使用numpy模块创建数组操作示例
Jun 20 Python
Django JWT Token RestfulAPI用户认证详解
Jan 23 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
使用python制作游戏下载进度条的代码(程序说明见注释)
Oct 24 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
Python实现手势识别
Oct 21 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/03/25 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
浅谈Webpack自动化构建实践指南
2017/12/18 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
python实现机器学习之元线性回归
2018/09/06 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
美国最佳选择产品网站:Best Choice Products
2019/05/27 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
大学班级干部的自我评价分享
2014/02/10 职场文书
品牌推广活动策划方案
2014/08/19 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
放牛班的春天观后感
2015/06/01 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书