专题8:ORM基本操作

本文详细介绍了ORM(Object-Relational Mapping)的操作,包括数据创建、查询、条件查询、更新、删除以及特殊操作如F对象和Q对象的使用。重点讲述了如何通过filter(), exclude(), get()进行数据查询,并演示了如何进行聚合查询。此外,还强调了在高并发场景下,使用F对象优化数据更新的重要性。
摘要由CSDN通过智能技术生成

一、ORM操作有哪些?

二、管理器对象

三、ORM操作的具体内容

1、创建数据

方案1 验证: 

方案2 验证:

2、查询操作

(1)不带条件的查询操作

 

 

  

(2)带条件的查询操作 

filter()返回QuerySet,里面的元素是MyModel类的实例对象

MyModel.objects.filter(条件1, 条件2) = select * from MyTable where 条件1 and 条件2; 

exclude()返回QuerySet,里面的元素是MyModel类的实例对象

MyModel.objects.exclude(条件1, 条件2) = select * from MyTable where not (条件1 and 条件2); 

get()返回的是MyModel类的实例,而不是QuerySet,因为它只返回满足条件的唯一一条数据,如果满足条件的数据多于一条或为0条,则直接报错。

注意:使用get()时,记得用try,为了防止多条数据符合条件或没有数据符合条件引起的报错。

(3)非等值过滤查询——查询谓词

在以后的工作中,__exact通常用来实现SQL中的is null操作

 

注意:__range(A, B)表示:A <= X <= B 

(4)更新操作

        更新单个数据:

        更新批量数据:

注意:books.upsate(条件)也是有返回值的,返回值就是此次操作成功更新的数据的条数。 

(5)删除操作

        删除单个数据:

        删除批量数据:

        伪删除

  (6)F对象(面试高频)

上面这个(F对象)等于是没有查数据,直接交给数据库更新;而下面for循环的这个是要先拿到数据才能改。

场景:

假设要做一个文章或视频点赞的功能,某人发布视频后,有N个人在同一时刻点赞,那么如果按照常规方法先拿到数据,那么这N个人同一时刻拿到的点赞数据都是0,然后加1,再存到数据库,等于把‘点赞’=1反复执行了N遍,最后虽然有N个人点赞,可数据库中存储的点赞数却是1。

(7)Q对象(面试高频)

  

3、聚合查询

(1)整表聚合:不带分组的聚合查询

 注意:整表聚合返回的值是一个字典

(2)分组聚合

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值