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中for循环下的索引变量的作用域
Apr 15 Python
python 中random模块的常用方法总结
Jul 08 Python
python实现发送邮件功能
Jul 22 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
详解python itertools功能
Feb 07 Python
Python %r和%s区别代码实例解析
Apr 03 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
用pushplus+python监控亚马逊到货动态推送微信
Jan 29 Python
Pandas数据分析的一些常用小技巧
Feb 07 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
python使用pymysql模块操作MySQL
Jun 16 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/02/05 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
python根据url地址下载小文件的实例
2018/12/18 Python
Python 支付整合开发包的实现
2019/01/23 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
python中数据库like模糊查询方式
2020/03/02 Python
澳大利亚网上书店:QBD
2021/01/09 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
2022/08/14 Python