对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 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
Python多进程并发与多线程并发编程实例总结
Feb 08 Python
python Pandas 读取txt表格的实例
Apr 29 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
python3.6环境安装+pip环境配置教程图文详解
Jun 20 Python
Django单元测试工具test client使用详解
Aug 02 Python
深入了解python中元类的相关知识
Aug 29 Python
python输出结果刷新及进度条的实现操作
Jul 13 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
python中pyplot基础图标函数整理
Nov 10 Python
Pillow图像处理库安装及使用
Apr 12 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下的权限算法的实现
2007/04/28 PHP
PHP读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
2014/12/02 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
Electron-vue脚手架改造vue项目的方法
2018/10/22 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
js实现蒙版效果
2020/01/11 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
python制作websocket服务器实例分享
2016/11/20 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
python各层级目录下import方法代码实例
2020/01/20 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
主持词开场白
2014/03/17 职场文书
岗位聘任报告
2015/03/02 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书