对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实现生成简单的Makefile文件代码示例
Mar 10 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
Jun 23 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
用Python解决x的n次方问题
Feb 08 Python
python 实现查找文件并输出满足某一条件的数据项方法
Jun 12 Python
python pandas 时间日期的处理实现
Jul 30 Python
python numpy库linspace相同间隔采样的实现
Feb 25 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Python 爬虫性能相关总结
Aug 03 Python
Python如何让字典保持有序排列
Apr 29 Python
Python first-order-model实现让照片动起来
Jun 25 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
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php7 新增功能实例总结
2020/05/25 PHP
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
任意Json转成无序列表的方法示例
2016/12/09 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
详解Python用户登录接口的方法
2019/04/17 Python
python 项目目录结构设置
2020/02/14 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
大学生就业自我推荐信
2014/05/10 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
会计专业求职信
2014/08/10 职场文书
村党组织公开承诺书
2015/04/30 职场文书
暑期工社会实践报告
2015/07/13 职场文书
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python
Linux安装apache服务器的配置过程
2021/11/27 Servers