对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 19 Python
Python自定义主从分布式架构实例分析
Sep 19 Python
python3 拼接字符串的7种方法
Sep 12 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
Django--权限Permissions的例子
Aug 28 Python
基于python进行抽样分布描述及实践详解
Sep 02 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
Python OpenCV读取显示视频的方法示例
Feb 20 Python
Python爬虫如何应对Cloudflare邮箱加密
Jun 24 Python
你需要学会的8个Python列表技巧
Jun 24 Python
如何用python爬取微博热搜数据并保存
Feb 20 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写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
php抽奖概率算法(刮刮卡,大转盘)
2020/04/17 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
2016/05/20 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
清除输入框内的空格
2016/12/21 Javascript
Webpack如何引入bootstrap的方法
2017/06/17 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
js验证密码强度解析
2020/03/18 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
用Python写冒泡排序代码
2016/04/12 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Python实现翻转数组功能示例
2018/01/12 Python
Python贪心算法实例小结
2018/04/22 Python
django 自定义filter 判断if var in list的例子
2019/08/20 Python
FFrpc python客户端lib使用解析
2019/08/24 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
标准自荐信范文
2014/01/29 职场文书
关于保护环境的建议书
2014/08/26 职场文书
小学教师求职信范文
2015/03/20 职场文书
董事长新年致辞
2015/07/29 职场文书
Pillow图像处理库安装及使用
2022/04/12 Python