Django数据库查询:ORM与原生SQL方法详解.pptxVIP

  • 0
  • 0
  • 约1.88千字
  • 约 9页
  • 2026-02-03 发布于北京
  • 举报

Django数据库查询:ORM与原生SQL方法详解.pptx

Django2入门第四章model层4.5查询

orm的两种查找模式方法举例原生sql的查询方法User.objects.raw(‘select*fromuser’)基于orm方法查询User.objects.filter(id=xx)

基于orm的常用查询方法方法名描述User.objects.all()返回user表中所有的数据User.objects.get(**filter)返回满足过滤条件的数据(单调,没有则抛异常)User.objects.filter(**filter)返回满足过滤条件的多条数据,没有泽返回空User.objects.all()/filter().exists()返回是否有对象,TrueFalseUser.objects.all()/filter().count()返回获取到对象的数量User.objects.all()/filter().exclude(**filter)返回的数据中排除满足**filter的User.objects.filter().distinct(‘age)返回的对象中通过某个列去重User.objects.filter().order_by(‘age’)返回的对象中通过age排序dir(User.objets)还有更多可能不太常用的方法上边的链式操作方法并不一定要依赖一级方法,大家要灵活运用

深入查询A属性名描述举例__exactsql中like‘dewei’的精准搜索情况name__exact=‘dewei’__iexact精准搜索且忽略大小写name__iexact=‘Dewei’__contains模糊查找类似like‘%dewei%’name__contains=‘dewei’__icontains模糊查找忽略大小写name__icontains=‘Dewei’__gt大于age__gt=18__gte大于等于age__gte=18__lt小于age__lt=33__lte小于等于age__lte=33__isnull是否是空email__isnull=True

深入查询B属性名描述举例__startswith以什么开头like‘dewei%’Name__startswith=‘dewei’__istartswith同上,忽略大小写Name__istartswith=‘Dewei’__endswith以什么结尾like‘%dewei’Name__endswith=‘dewei’__iendswith同上,忽略大小写Name__iendswith=‘deWei’__in查询在列表哪的数据Name__in=[‘dewei’,‘小明’]

“或”查找fromdjango.dbimportQUser=User.objects.filter(Q(username=‘dewei’)|Q(username=‘小明’))

聚合查询方法名描述举例Avg平均值User.objects.all().aggregate(Avg=‘age’)Sum取和User.objects.all().aggregate(Sum=‘age’)Max最大值User.objects.all().aggregate(Max=‘age’)Min最小值User.objects.all().aggregate(Min=‘age’)Count统计数量User.objects.all().aggregate(Count=‘age’)

多表查询之反向查询当在user表和diary表之间所有关联的时候,通过user模型借助diary关联的条件进行查找user的时候,我们称为反向查询,例如:user=User.objects.filter(diary__id=2)就是说查找在diary表中id为2的diary这个列队迎的user的列

多表查询之查询关联信息通过主对象选择需要查找的表对应的related_name,通过value查询具体信息,如下:user=User.objects.get(pk=1)user.diary.values(‘content’)-返回id为1用户的diary的content信息user.diary.count()-返回id为1用户的diary关联数量user.diary其实就是Diary模型,我们可以通过它再去调用更多方法,比如getfilter再去扩展查询

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档