对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 相关文章推荐
从零学Python之入门(二)基本数据类型
May 25 Python
Python对象体系深入分析
Oct 28 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
详解python实现线程安全的单例模式
Mar 05 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
基于python实现学生管理系统
Oct 17 Python
Python 编程速成(推荐)
Apr 15 Python
Python调用C语言的实现
Jul 26 Python
Python自动登录QQ的实现示例
Aug 28 Python
OpenCV-Python模板匹配人眼的实例
Jun 08 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运算符的知识大全
2011/11/03 PHP
php curl基本操作详解
2013/07/23 PHP
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
详解PHP中的PDO类
2015/07/06 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
Javascript对象Clone实例分析
2015/06/09 Javascript
javascript背景时钟实现方法
2015/06/18 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
Python模拟随机游走图形效果示例
2018/02/06 Python
python删除某个字符
2018/03/19 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
python绘制封闭多边形教程
2020/02/18 Python
python列表的逆序遍历实现
2020/04/20 Python
Html5新标签解释及用法
2012/02/17 HTML / CSS
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
RIP版本1跟版本2的区别
2013/12/30 面试题
社区七一党员活动方案
2014/01/25 职场文书
社会实践活动总结范文
2014/07/03 职场文书
关于青春的演讲稿800字
2014/08/22 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书