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 相关文章推荐
python3图片转换二进制存入mysql
Dec 06 Python
python字符串对其居中显示的方法
Jul 11 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
mac系统安装Python3初体验
Jan 02 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
Python之读取TXT文件的方法小结
Apr 27 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
Sep 14 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
Pytorch对Himmelblau函数的优化详解
Feb 29 Python
Python3基于print打印带颜色字符串
Jul 06 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
在javascript中对于DOM的加强
2013/04/11 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
extjs简介_动力节点Java学院整理
2017/07/17 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
javascript、php关键字搜索函数的使用方法
2018/05/29 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python实现的文件同步服务器实例
2015/06/02 Python
Django实现学员管理系统
2019/02/26 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
Django url 路由匹配过程详解
2021/01/22 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
索尼巴西商店:Sony巴西
2019/06/21 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
公司薪酬管理制度
2014/01/31 职场文书
《春晓》教学反思
2014/04/20 职场文书
三问三解心得体会
2014/09/05 职场文书
2015年度合同管理工作总结
2015/05/22 职场文书