对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与文件进行交互的方法
Mar 01 Python
对numpy数据写入文件的方法讲解
Jul 09 Python
详解windows python3.7安装numpy问题的解决方法
Aug 13 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
Python turtle库绘制菱形的3种方式小结
Nov 23 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
Python logging模块异步线程写日志实现过程解析
Jun 30 Python
python脚本定时发送邮件
Dec 22 Python
python四种出行路线规划的实现
Jun 23 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 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/09/09 PHP
PHP中in_array的隐式转换的解决方法
2018/03/06 PHP
PHP过滤器 filter_has_var() 函数用法实例分析
2020/04/23 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
JS添加或删除HTML dom元素的方法实例分析
2019/03/05 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
详解jquery和vue对比
2019/04/16 jQuery
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
Python fileinput模块使用介绍
2014/11/30 Python
python 远程统计文件代码分享
2015/05/14 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Node.js 和 Python之间该选择哪个?
2020/08/05 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
HTML5 manifest离线缓存的示例代码
2018/08/08 HTML / CSS
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
大学生军训自我鉴定
2014/02/12 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
校园活动宣传方案
2014/03/28 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
Django使用channels + websocket打造在线聊天室
2021/05/20 Python