对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 14 Python
Python中使用Flask、MongoDB搭建简易图片服务器
Feb 04 Python
基python实现多线程网页爬虫
Sep 06 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
Python 通过截图匹配原图中的位置(opencv)实例
Aug 27 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
thinkPHP分组后模板无法加载问题解决方法
2016/07/12 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
CCPry JS类库 代码
2009/10/30 Javascript
关于flash遮盖div浮动层的解决方法
2010/07/17 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
Python实现图片拼接的代码
2018/07/02 Python
分享8点超级有用的Python编程建议(推荐)
2019/10/13 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
2014年服装销售工作总结
2014/11/27 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
python实现批量移动文件
2021/04/05 Python
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android