Django ORM查询

Django ORM基础查询

基础的增删改查

# ---增---
# 方法一:  register_time可以直接传时间格式的字符串,也可以传时间日期对象
models.User.objects.create(name='kwen',age=18,register_time='2020-11-10')

# 方法二:

import datetime
ctime = datetime.datetime.now()
user_obj = models.User(name='kwen',age=18,register_time=ctime)
user_obj.save()​

# ---删---
'''
    pk 主键  自动查找表的主键字段,不需要写明主键名(sid、uid……)
    返回值:(1, {'app03.User': 1}) 
    第一个1为影响的行数
'''
# 方法一
res = models.User.objects.filter(pk=2).delete()print(res)

# 方法二
user_obj = models.User.objects.filter(pk=2).first()user_obj.delete()

​# --修改--
# 方法一
models.User.objects.filter(pk=3).update(name='lisa2')

# 方法二
user_obj = models.User.objects.filter(pk=3).first()
user_obj.name = 'lisa'user_obj.save()

常用查询方法

Model.objects.all()	 # 查询所有
Model.objects.filter()	 # 带有条件的过滤查询
Model.objects.get()	  # 获取某个数据对象
Model.objects.first()	# 获取到当前查询列表的第一个
Model.objects.last()	 # 获取到当前查询列表的最后一个

#.values()	# 获取指定数据字段 返回结果是列表套字典
models.User.objects.values('name','age').get(pk=3) 

#.values_list()  返回结果是列表套元组
res = models.User.objects.values_list('name')
print(res)

#.distinct()	# 去重 注意主键字段
obj = models.User.objects.values('name','age').distinct()  
print(obj)

#.order_by()  # 按某字段排序
obj = models.User.objects.order_by('-age')
print(obj)

#.reverse()	# 反序(前提是有序)
obj = models.User.objects.order_by('-age').reverse()
print(obj)


#.exclude()	# 排除某某在外,除了某某之外
obj = models.User.objects.exclude(name='lisa')
print(obj)

#.count()	# 计数,统计
#.exists()	# 是否存在

特殊查询    双下划线查询

# 用法:models.objects.filter(字段__gt=值)
__gt	# 大于
models.objects.filter(字段__gt=值)

__lt	# 小于	
models.objects.filter(字段__lt=值)

__gte
models.objects.filter(字段__gte=值)

__lte
models.objects.filter(字段__lte=值)

__contains	# 包含 模糊查询 区分大小写 忽略大小写 __icontains
models.objects.filter(字段__contains=值)

__in=[]	 # 或  查询age是12或31或45
models.objects.filter(age__in=[12,31,45])

__range=[]	# 在x到x之间,包含两端  查询年龄在12~45之间的
models.objects.filter(age__range=[12,45])

__year __month __day  # 按年|月|日 查询年份为2019年的
models.objects.filter(date__year='2019')

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值