时间:2021-05-23
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__nameobj2 = UserInfo.objects.filter(user_name__endswith='王')#以‘王'结尾的user__nameobj3 = 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 Qobj = UserInfo.objects.filter(Q(password='123456') & Q(id__gt=2) & ~Q(phone=188))计算和和最大值:
from django.db.models import Sum,Max,Minobj = 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映射与模糊查询的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Django的ORM是非常好用的,哪怕不是做Web项目也值得一用,所以网上也可以找到不少使用Django开发非Web项目的资料,因为除了ORM之个,命令行、配置
ORM对象关系映射在数据库中,实现对数据的增删改查,使用的是SQ语句,在django中,通过python代码,实现对数据库的增删改查,这就是ORM。在pytho
ORM框架使用最广泛的就是SQLAlchemy和Django自带的ORM框架,但是SQLAlchemy的语法显然相对Django的ORM框架麻烦一点。而Djan
ORM查询管理器对于ORM定义:对象关系映射,ObjectRelationalMapping,ORM,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统
摘要在这篇文章里,我将以反模式的角度来直接讨论Django的低级ORM查询方法的使用。作为一种替代方式,我们需要在包含业务逻辑的模型层建立与特定领域相关的查询A