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求解最大公约数的实现方法
Aug 20 Python
深入浅析python定时杀进程
Jun 06 Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
Python Flask框架扩展操作示例
May 03 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
Python 中的Sympy详细使用
Aug 07 Python
python库sklearn常用操作
Aug 23 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合并两个数组的两种方式的异同
2012/09/14 PHP
PHP页面中文乱码分析
2013/10/29 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
Jquery ui css framework
2010/06/28 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
讲解Python中的递归函数
2015/04/27 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
2018/10/21 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
应聘教师推荐信
2013/10/31 职场文书
《问银河》教学反思
2014/02/19 职场文书
cf收人广告词大全
2014/03/14 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
2014年个人年终总结
2015/03/09 职场文书
关于上班时间调整的通知
2015/04/23 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang