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使用MD5加密字符串示例
Aug 22 Python
用Python的SimPy库简化复杂的编程模型的介绍
Apr 13 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
Aug 16 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Python定义一个跨越多行的字符串的多种方法小结
Jul 19 Python
Python多项式回归的实现方法
Mar 11 Python
详解python多线程之间的同步(一)
Apr 03 Python
基于python+selenium的二次封装的实现
Jan 06 Python
python字符串替换re.sub()实例解析
Feb 09 Python
Python中Selenium库使用教程详解
Jul 23 Python
Python3爬虫里关于代理的设置总结
Jul 30 Python
python3操作redis实现List列表实例
Aug 04 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的闭合标签“?&gt;”
2014/08/28 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
php中数组最简单的使用方法
2020/12/27 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
python web.py开发httpserver解决跨域问题实例解析
2018/02/12 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
实例详解Python装饰器与闭包
2019/07/29 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
python实现随机加减法生成器
2020/02/24 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
销售总监工作职责
2013/11/21 职场文书
实习生个人的自我评价
2013/12/08 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
婚宴致辞
2015/07/28 职场文书
靠谱的活动总结
2019/04/16 职场文书
Nginx访问日志及错误日志参数说明
2021/03/31 Servers
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python