python的django项目中orm查询语句
# 查询年龄大于10岁的用户
User.objects.filter(age__gt=10)
# 查询年龄大于等于10岁的用户
User.objects.filter(age__gte=10)
# 查询年龄小于10岁的用户
User.objects.filter(age__lt=10)
# 查询年龄小于等于10岁的用户
User.objects.filter(age__lte=10)
# 查询年龄在某一范围的用户
User.objects.filter(age__in=[10,30])
# __exact 相当于 like'小明',
User.objects.filter(username__exact='小明')
# __iexact 忽略大小写 ilike 'XiaoMing',
User.objects.filter(username__iexact='XiaoMing')
# __contains 中间包含 like '%小%',
User.objects.filter(username__contains='%小%')
# __icontains 中间包含忽略大小写 ilike '%Xiao%',
User.objects.filter(username__contains='%Xiao%')
# __contains和__icontains对于sqlite来说,__contains的作用效果等同于__icontains.
#查询用户名为空的用户
User.objects.filter(username__isnull=True)
#查询用户名不为空的用户
User.objects.filter(username__isnull=False)
#查询年龄不为10的用户
User.objects.filter().excute(age=10)
#查询年龄不为在[10, 20]的用户
User.objects.filter().excute(age__in=[10, 20])
方法名 解释
filter() 过滤查询对象。
exclude() 排除满足条件的对象
annotate() 使用聚合函数
order_by() 对查询集进行排序
reverse() 反向排序
distinct() 对查询集去重
values() 返回包含对象具体值的字典的QuerySet
values_list() 与values()类似,只是返回的是元组而不是字典。
dates() 根据日期获取查询集
datetimes() 根据时间获取查询集
none() 创建空的查询集
all() 获取所有的对象
union() 并集
intersection() 交集
difference() 差集
select_related() 附带查询关联对象
prefetch_related() 预先查询
extra() 附加SQL查询
defer() 不加载指定字段
only() 只加载指定的字段
using() 选择数据库
select_for_update() 锁住选择的对象,直到事务结束。
raw() 接收一个原始的SQL查询
# 计算学生平均年龄, 返回字典。age和avg间是双下划线哦
Student.objects.all().aggregate(Avg('age'))
{ 'age__avg': 12 }
# 学生平均年龄,返回字典。all()不是必须的。
Student.objects.aggregate(Avg('age'))
{ 'age__avg: 12' }
# 计算学生总年龄, 返回字典。
Student.objects.aggregate(Sum('age'))
{ 'age__sum': 144 }
# 学生平均年龄, 设置字典的key
Student.objects.aggregate(average_age = Avg('age'))
{ 'average_age': 12 }
# 学生最大年龄,返回字典
Student.objects.aggregate(Max('age'))
{ 'age__max': 12 }
# 同时获取学生年龄均值, 最大值和最小值, 返回字典
Student.objects.aggregate(Avg('age‘), Max('age‘), Min('age‘))
{ 'age__avg': 12, 'age__max': 18, 'age__min': 6, }
# 根据Hobby反查学生最大年龄。查询字段student和age间有双下划线哦。
Hobby.objects.aggregate(Max('student__age'))
{ 'student__age__max': 12 }