对Django项目中的ORM映射与模糊查询的使用详解


Posted in Python onJuly 18, 2019

ORM映射

什么是ORM映射?在笔者认为就是对SQL语句的封装,所写语句与SQL对应语句含义相同,使开发更加简单方便,不过也是存在弊端的,使程序运行效率下降。例如:

UserInfo.objects.get(id=2)

等于

select * from user_userinfo where id=2

修改管理器(models.py)

导入新的包:from django.db import models

进行模糊查询

开始进行查找前我们先来认识filter()方法。

这是一个过滤器方法用于过滤掉不符合条件的元素。

值得一提的是其内自带方法函数的引用方式为‘__方法名称'。

__exact 精确等于 like ‘aaa'

__iexact 精确等于 忽略大小写 ilike ‘aaa'

__contains 包含 like ‘%aaa%'

__icontains 包含 忽略大小写 ilike ‘%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。

__gt 大于

__gte 大于等于

__lt 小于

__lte 小于等于

__in 存在于一个list范围内

__startswith 以…开头

__istartswith 以…开头 忽略大小写

__endswith 以…结尾

__iendswith 以…结尾,忽略大小写

__range 在…范围内

__year 日期字段的年份

__month 日期字段的月份

__day 日期字段的日

__isnull=True/False

举几个例子:

obj1 = UserInfo.objects.filter(user_name__contains='王')#以‘王'开头的user__name
obj2 = UserInfo.objects.filter(user_name__endswith='王')#以‘王'结尾的user__name
obj3 = UserInfo.objects.filter(id__gte=5)#ID大于等于5的
obj5 = UserInfo.objects.filter(id__exact=5)#id等于5的
obj6 = UserInfo.objects.filter(id__in=[1,3,5])#id等于1,3,5,的

exclude方法,排除选项。

obj8 = UserInfo.objects.filter(password='123456',id__gt=2).exclude(phone=188)
#找到符合filter的内容后排除phone等于188的,它的另一种写法为
from django.db.models import Q
obj = UserInfo.objects.filter(Q(password='123456') & Q(id__gt=2) & ~Q(phone=188))

计算和和最大值:

from django.db.models import Sum,Max,Min
obj = UserInfo.objects.aggregate(Sum('id'))
obj = UserInfo.objects.aggregate(Max('id'))
obj = UserInfo.objects.aggregate(Min('id'))

统计个数

print(UserInfo.objects.count())#注:print只可于终端查看

范围查找

obj = UserInfo.objects.all()[1:3]#左闭右开,只查找了1和2

去重复

obj = person.useraddress_set.all()

而get方法与filter的最大区别为,get只能返回一个数据,filter可以返回多个,在get查找到两个以上数据时就会报错。

obj4 = UserInfo.objects.get(id=5)
city = UserAddress.objects.get(detail='北京望京')

以上这篇对Django项目中的ORM映射与模糊查询的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
Python格式化压缩后的JS文件的方法
Mar 05 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
python字典的常用操作方法小结
May 16 Python
python版学生管理系统
Jan 10 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
详解Django的model查询操作与查询性能优化
Oct 16 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
PYTHON绘制雷达图代码实例
Oct 15 Python
Python中如何添加自定义模块
Jun 09 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 Python
Django基础知识 web框架的本质详解
Jul 18 #Python
django 使用全局搜索功能的实例详解
Jul 18 #Python
Django中Middleware中的函数详解
Jul 18 #Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 #Python
react+django清除浏览器缓存的几种方法小结
Jul 17 #Python
在Pycharm中调试Django项目程序的操作方法
Jul 17 #Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 #Python
You might like
php 变量定义方法
2009/06/14 PHP
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
在线游戏大家来找茬II
2006/09/30 Javascript
Javascript 代码也可以变得优美的实现方法
2009/06/22 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
深入了解Python 变量作用域
2020/07/24 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
田径运动会开幕式及主持词
2014/03/28 职场文书
成绩单家长评语大全
2014/04/16 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2014年司机工作总结
2014/11/21 职场文书
个人党性分析总结
2015/03/05 职场文书
大专护理专业自荐信
2015/03/25 职场文书