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 相关文章推荐
Perl中著名的Schwartzian转换问题解决实现
Jun 02 Python
利用Python如何生成随机密码
Apr 20 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
使用Python实现windows下的抓包与解析
Jan 15 Python
Python操作MySQL模拟银行转账
Mar 12 Python
利用pyinstaller将py文件打包为exe的方法
May 14 Python
Python装饰器的执行过程实例分析
Jun 04 Python
windows下Python安装、使用教程和Notepad++的使用教程
Oct 06 Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 Python
Python字节单位转换实例
Dec 05 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 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
谈一谈收音机的高放电路
2021/03/02 无线电
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP实现断点续传乱序合并文件的方法
2018/09/06 PHP
JavaScript Timer实现代码
2010/02/17 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
jQuery中prevAll()方法用法实例
2015/01/08 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
bootstrap weebox 支持ajax的模态弹出框
2017/02/23 Javascript
JavaScript重复元素处理方法分析【统计个数、计算、去重复等】
2017/12/14 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
Python基于DES算法加密解密实例
2015/06/03 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
pandas取出重复数据的方法
2019/07/04 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
通过自学python能找到工作吗
2020/06/21 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
python+opencv实现车道线检测
2021/02/19 Python
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
施华洛世奇日本官网:SWAROVSKI日本
2018/05/04 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
生日宴会主持词
2014/03/20 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
暑期实践个人总结
2015/03/06 职场文书