1.查询所有数据
data=Infos.objects.all()#data是一个django.db.models.query.QuerySet对象
data[0].name
2.查询前3条数据
data=Infos.objects.all()[:3]
data[0].name
3.查询某个字段
data = Infos.objects.values("name")#data为queryset,里面存的不是对象而是dict <QuerySet [{'name': '张三'}, {'name': '李思'}]>
data[0]['name']#存在values结果集便是由dict组成
4.get和filter查询
data=Infos.objects.get(id=3)#返回对象
data.name
data=Infos.objects.filter(name="中岛美嘉")
data[0].name
get:条件必须是主键或者唯一约束字段,并且数据必须存在,不然会异常
filter:查询字段没有限制,只要是表中的一个字段就可,返回queryset或者空queryset
d=dict(name="玉置浩二",num=12)
data=Infos.objects.filter(**d)
5.Q函数:用来表示将or或者不等于查询等(多个Q使用|来表示)
from django.db.models import Q
or
data=Infos.objects.filter(Q(name=”理查德克莱德曼“)|Q(num=12))
!= 查询
data=Infos.objects.filter(~Q(name="郎朗"))
还可以使用exclude实现!=查询
data=Infos.objects.exclude(name="郎朗")
count()查询数据量
count=Infos.objects.all().count()
distinct()去重,根据values设置的字段执行
s=Infos.objects.values("name").filter(title="肖邦").distinct()
order_by()排序
默认是升序,
Infos.objects.all().order_by("id","title")
可以按照id的降序
Infos.objects.all().order_by("-id","title")
6.聚合查询,对数据值求和,求平均等。由annotate和aggregate组成
from django.db.models import Count,Sum,Avg
data = Infos.objects.values("name").annotate(Sum("num"))#annotate类似于groupby,对数据分组,没有values就对主键分组#
In [62]: data = Infos.objects.aggregate(id_count=Count("id"))#aggregate只返回计算结果==dict方式
In [63]: data
Out[63]: {'id_count': 5}
union(并集)、intersection(交集)、difference(差集)------每次查询的字段必须相同
In [64]: v1=工资模型.objects.filter(payment__gt=9000)
In [65]: v2=工资模型.objects.filter(payment__gt=3000)
data=v1.union(v2)
其他如法炮制
本文详细介绍了Django ORM的使用,包括查询所有数据、获取指定条数、查询特定字段、使用get和filter方法、运用Q函数进行复杂查询,以及聚合查询如count和distinct。此外,还涵盖了order_by的排序功能和聚合函数如Sum、Avg的使用。文章深入浅出地解析了Django数据库操作的各种技巧和应用场景。

1750

被折叠的 条评论
为什么被折叠?



