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实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Python字符串格式化输出方法分析
Apr 13 Python
解析Python的缩进规则的使用
Jan 16 Python
python使用for循环计算0-100的整数的和方法
Feb 01 Python
python如何通过twisted搭建socket服务
Feb 03 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
python pandas dataframe 去重函数的具体使用
Jul 20 Python
Python自动化测试基础必备知识点总结
Feb 07 Python
python 常用的异步框架汇总整理
Jun 18 Python
python中tkinter复选框使用操作
Nov 11 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之字符串变相相减的代码
2007/03/19 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
javascript定时器完整实例
2015/02/10 Javascript
js同源策略详解
2015/05/21 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
2015/11/26 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
微信小程序多列表渲染数据开关互不影响的实现
2020/06/05 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
python同时给两个收件人发送邮件的方法
2015/04/30 Python
使用python实现接口的方法
2017/07/07 Python
Python3多线程操作简单示例
2018/05/22 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
台湾最大网路书店:博客来
2018/03/18 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
生物制药专业求职信
2014/03/11 职场文书
婚纱店策划方案
2014/05/22 职场文书
真诚的求职信
2014/07/04 职场文书
担保书格式
2015/01/20 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
Linux系统下安装PHP7.3版本
2021/06/26 PHP