django学习10--数据的删除和查询(QuerySet)

删除数据

删除所有数据

在终端Shell模式下执行命令:表名.objects.all().delete(),删除全部记录

表名.objects.all().delete()

在这里插入图片描述
在这里插入图片描述

删除一行数据:get()与delete()

导入数据有两种方式:一种是运行SQL脚本,一种是使用loaddata命令

  • 导入数据到表:python manage.py loaddata json文件

在这里插入图片描述
(当然运行此指令时需退出shell模式)
要将数据文件改成不带BOM的UTF-8编码格式
在这里插入图片描述

  • 重新导入数据到表:
python manage.py loaddata json数据文件

恢复后如此:
在这里插入图片描述

  • 在终端Shell模式下执行命令:
创建类().objects.get(id=8).delete()

删除id为8的记录:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

删除多行数据:filter()与delete()

在终端Shell模式下执行命令:

 创建类().objects.filter(字段名='字段内容').delete()

示例:
首先新建一些数据便于操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除有外键的数据:delete()

级联删除

在Shell模式下执行命令:

PersonInfo.objects.get(id=1).delete()

在这里插入图片描述

  • 删除成功,总共删除了2条数据,1条是index_personinfo表的记录,1条是index_vocation表的记录。
    查看index_personinfo表,id=1的记录已被删除
    在这里插入图片描述
  • 查看index_vocation表,级联的记录(外键name_id=1)已被删除
    在这里插入图片描述

在这里插入图片描述

查询数据

查询全部数据:all()

在Shell模式下输入下列指令:

ps = PersonInfo.objects.all()

循环遍历查看记录
在这里插入图片描述
遍历记录详细内容
在这里插入图片描述

查询前3条数据:all()[:3]

示例:查询index_personinfo表前3条记录
在这里插入图片描述

以字典列表形式查询某个字段数据:values() - 投影运算

示例:查询index_vocation表job字段的数据
在这里插入图片描述

使用get()函数查询一条记录

示例:查询index_vocation表id=2的记录
在这里插入图片描述

使用filter()函数查询多条记录

示例:查询index_vocation表中job='软件开发’的记录
在这里插入图片描述

使用Q()函数进行查询(类似于“或”的关系)

示例:查询job='网站设计’或id=3的记录
在这里插入图片描述

使用~Q()表示不等于关系

示例:查询不是“网站设计”的职业信息

在这里插入图片描述

使用exclude()表示不等于关系

示例:查询不是“网站设计”的职业信息
在这里插入图片描述

使用count()函数查询记录数

示例:在职业表里查询“软件开发”的记录数

在这里插入图片描述

使用distinct()函数去重

示例:在职业表里查询有多少个不同的工作(job)
要细心

使用order_by()函数进行排序

示例1:针对全部记录按照id升序排列
在这里插入图片描述
示例2:针对全部记录按照id降序排列
在这里插入图片描述

使用annotate()函数进行分组

示例:按job分组对id求和
在这里插入图片描述

使用aggregate()进行聚合计算

  • aggregate()嵌套使用五个聚合函数:Count()、Sum()、Avg()、Max()、Min()
  • 示例1:按job统计个数
    在这里插入图片描述
    示例2:按payment统计平均
    在这里插入图片描述
    示例3:按payment统计个数、和、平均、最大值和最小值
    在这里插入图片描述

使用union()函数合并多个查询结果

示例:将两个查询结果合并成一个结果集(payment在5000以下和在15000以上)
在这里插入图片描述

  • 说明:union()函数可以接受多个参数,也就是说一个查询集可以和多个查询集合并
  • 说明:vs与vs2的并,vs2与vs的并,两者结果是相同的,因为加法满足交换律

使用intersection()求查询结果的交集

示例:求两个查询结果的交集(payment在5000以上和payment在15000以下)
在这里插入图片描述
在这里插入图片描述

使用difference()求查询结果的差

示例:求vs1(薪水在5000以上)与vs2(薪水在15000以下)的差
在这里插入图片描述
(未完待续)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中,QuerySet和Object是两个不同的概念。 1. QuerySet QuerySetDjango中的一个概念,它表示数据库操作的结果集合。QuerySet可以像列表一样进行迭代、切片等操作,但是它并不是真正的列表。当你执行一个查询操作时,Django会返回一个QuerySet对象,这个对象包含了一些查询结果的方法。这些方法可以用来进行进一步的过滤、排序、切片等操作。QuerySet是惰性的,这意味着它只有在需要的时候才会执行查询,这有助于提高性能。 例如,以下代码创建了一个QuerySet对象,它包含了所有年龄大于18岁的用户: ``` from django.contrib.auth.models import User users = User.objects.filter(age__gt=18) ``` 2. Object Object指的是Django模型中的一个实例。一个模型是一个数据库表的抽象,它定义了表的结构和字段,每个实例则代表了表中的一行数据。你可以使用ORM API来创建、更新、删除查询模型实例。 例如,以下代码创建了一个User模型的实例: ``` from django.contrib.auth.models import User user = User.objects.create(username='john') user.first_name = 'John' user.last_name = 'Doe' user.save() ``` 在这个例子中,我们首先创建了一个User实例,然后通过修改它的属性来更新它,最后使用save()方法将更改保存到数据库中。 总结 QuerySet和Object是Django中的两个不同的概念,它们分别代表了数据库操作的结果集合和模型中的一个实例。QuerySet是一个惰性的对象,它包含了一些查询结果的方法,可以用来进行进一步的过滤、排序、切片等操作。Object则代表了一个模型实例,你可以使用ORM API来创建、更新、删除查询它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值