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脚本
Sep 01 Python
python提取页面内url列表的方法
May 25 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
python构建自定义回调函数详解
Jun 20 Python
python正则表达式面试题解答
Apr 28 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
Mac下Anaconda的安装和使用教程
Nov 29 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
Python 控制终端输出文字的实例
Jul 12 Python
python创建学生管理系统
Nov 22 Python
Python 利用flask搭建一个共享服务器的步骤
Dec 05 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 随机生成10位字符代码
2009/03/26 PHP
php简单判断文本编码的方法
2015/07/30 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
javascript常用的方法整理
2015/08/20 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
JavaScript使用ZeroClipboard操作剪切板
2017/05/10 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
javascript回调函数详解
2018/02/06 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
jsonp格式前端发送和后台接受写法的代码详解
2019/11/07 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
python局域网ip扫描示例分享
2014/04/03 Python
在Python的Flask框架中实现单元测试的教程
2015/04/20 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
Python实现的建造者模式示例
2018/08/06 Python
python 计算方位角实例(根据两点的坐标计算)
2020/01/17 Python
详解python中的lambda与sorted函数
2020/09/04 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
Ruby如何实现动态方法调用
2012/11/18 面试题
自我评价是什么
2014/01/04 职场文书
领导干部考察材料
2014/02/08 职场文书
2015年度优秀员工自荐书
2015/03/06 职场文书
催款函范文
2015/06/24 职场文书
新学期主题班会
2015/08/17 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL