对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实现去除下载电影和电视剧文件名中的多余字符的方法
Sep 23 Python
基于Python实现一个简单的银行转账操作
Mar 06 Python
Python 元类实例解析
Apr 04 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
python中正则表达式 re.findall 用法
Oct 23 Python
远程部署工具Fabric详解(支持Python3)
Jul 04 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
Python3搭建http服务器的实现代码
Feb 11 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
Jan 05 Python
PO模式在selenium自动化测试框架的优势
Mar 20 Python
使用Python获取字典键对应值的方法
Apr 26 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开启gzip页面压缩实例代码
2010/03/11 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
2021/02/22 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
编写可维护面向对象的JavaScript代码[翻译]
2011/02/12 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
基于JavaScript canvas绘制贝塞尔曲线
2018/12/25 Javascript
JS自定义右键菜单实现代码解析
2020/07/16 Javascript
Python入门篇之列表和元组
2014/10/17 Python
python简单文本处理的方法
2015/07/10 Python
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
Python教程之全局变量用法
2016/06/27 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
毕业生护理专业个人求职信范文
2014/01/04 职场文书
网站出售协议书范文
2014/10/10 职场文书
检讨书范文
2015/01/27 职场文书
公司借款担保书
2015/09/22 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
MySQL添加索引特点及优化问题
2022/07/23 MySQL