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 相关文章推荐
pycharm 使用心得(五)断点调试
Jun 06 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
详细分析python3的reduce函数
Dec 05 Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Django上线部署之IIS的配置方法
Aug 22 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
Python操作qml对象过程详解
Sep 26 Python
python中time库的实例使用方法
Oct 31 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
Python爬虫新手入门之初学lxml库
Dec 20 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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/11/16 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
Laravel框架表单验证详解
2014/09/04 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
jquery实现全选、反选、获得所有选中的checkbox
2020/09/13 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
JavaScript数据存储 Cookie篇
2016/07/02 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
vue单页应用加百度统计代码(亲测有效)
2018/01/31 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
VUE项目axios请求头更改Content-Type操作
2020/07/24 Javascript
分享几道你可能遇到的python面试题
2017/07/24 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Html5 new XMLHttpRequest()监听附件上传进度
2021/01/14 HTML / CSS
西班牙英格列斯百货官网:El Corte Inglés
2016/09/25 全球购物
平面设计岗位职责
2013/12/14 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
毕业实习单位意见
2015/06/04 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技