对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的Django框架中加载模版的方法
Jul 16 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
python实现彩色图转换成灰度图
Jan 15 Python
深入了解Django View(视图系统)
Jul 23 Python
python如何将两个txt文件内容合并
Oct 18 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
python有序查找算法 二分法实例解析
Feb 18 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
python为什么要安装到c盘
Jul 20 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
解决numpy数组互换两行及赋值的问题
Apr 17 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设计模式之结构模式的深入解析
2013/06/13 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
深入理解PHP中的count函数
2016/05/31 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jquery操作 iframe的方法
2014/12/03 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
python实现简单爬虫功能的示例
2016/10/24 Python
解决Django migrate No changes detected 不能创建表的问题
2018/05/27 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
联想澳大利亚官网:Lenovo Australia
2018/01/18 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
超市5.1促销活动
2014/01/15 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
基层党员公开承诺书
2014/05/29 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS