当前位置: 首页 > 编程笔记 >

对Django项目中的ORM映射与模糊查询的使用详解

宋鸿德
2023-03-14
本文向大家介绍对Django项目中的ORM映射与模糊查询的使用详解,包括了对Django项目中的ORM映射与模糊查询的使用详解的使用技巧和注意事项,需要的朋友参考一下

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映射与模糊查询的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Mybatis模糊查询及自动映射实现详解,包括了Mybatis模糊查询及自动映射实现详解的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Mybatis模糊查询及自动映射实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Mybatis的模糊查询 1. 参数中直接加入%% 1 2 3 4 5 6 7 8 9 param

  • 本文向大家介绍MyBatis-plus 模糊查询的使用,包括了MyBatis-plus 模糊查询的使用的使用技巧和注意事项,需要的朋友参考一下 在使用MyBatis-plus的时候,一些基础的增删改查可以不用再自己写sql了: 就这样,就可以实现user表的增删改查了。 模糊查询 使用userDao.selectList(queryWrapper)方法,就可以查询出一个用户列表。 如果需要模糊查询

  • 在这一章中,你将学习 Django 如何连接到数据库,并将数据存储在里面。一探究竟吧! QuerySet 是什幺呢? 从本质上说,QuerySet 是给定模型的对象列表(list)。QuerySet 允许您从数据库中读取数据,对其进行筛选以及排序。 用例子来学习最容易的了。让我们试试这个,好吗? Django shell 打开你本地的终端(不是在Python解析器里面) 然后输入这个命令: (my

  • 本文向大家介绍在脚本中单独使用django的ORM模型详解,包括了在脚本中单独使用django的ORM模型详解的使用技巧和注意事项,需要的朋友参考一下 有时候在测试django中一些模块时,不想重新跑一整个django项目,只想跑单个文件,正好写在if __name__ == '__main__': 这样也不会打扰到正常的代码逻辑 方法 正常方法 大家都知道的方法就是'python manage.

  • [ ] 查询包含马的学生 // 查询姓名包含马的学生 const { field = '' } = ctx.query const fields = field.split(';').filter(f => f) Student.findAll({ attributes: fields.length === 0 ? '' : fields, where: { name:

  • 本文向大家介绍django项目搭建与Session使用详解,包括了django项目搭建与Session使用详解的使用技巧和注意事项,需要的朋友参考一下 前言 Django完全支持也匿名会话,简单说就是使用跨网页之间可以进行通讯,比如显示用户名,用户是否已经发表评论。session框架让你存储和获取访问者的数据信息,这些信息保存在服务器上(默认是数据库中),以 cookies 的方式发送和获取一个包