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中常用的各种数据库操作模块和连接实例
May 29 Python
python抽象基类用法实例分析
Jun 04 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python简单读取json文件功能示例
Nov 30 Python
Python多进程入门、分布式进程数据共享实例详解
Jun 03 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
基于pandas中expand的作用详解
Dec 17 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
Django CSRF认证的几种解决方案
Mar 03 Python
基于Python脚本实现邮件报警功能
May 20 Python
pyqt5 textEdit、lineEdit操作的示例代码
Aug 12 Python
Python实现列表索引批量删除的5种方法
Nov 16 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加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
PHP连接access数据库
2008/03/27 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
浅谈javascript的调试
2015/01/28 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
Python实现字典的key和values的交换
2015/08/04 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
Python jieba库用法及实例解析
2019/11/04 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
会议邀请函范文
2014/01/09 职场文书
《巨人的花园》教学反思
2014/02/12 职场文书
机械系毕业生求职信
2014/05/28 职场文书
2015年人事科工作总结
2015/04/28 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server