删除数据有3种方式:删除数据表的全部数据、删除一行数据和删除多行数据.
1.删除一行数据:get()与delete()- 在终端Shell模式下执行命令:Types.objects.get(id=1).delete(),删除id为1的记录
- 查看commodity_types表
- 删除全部“儿童用品”
- 查看commodity_types表
- 在终端Shell模式下执行命令:Types.objects.all().delete(),删除全部记录
- 查看commodity_types表
- 在index模块的models.py中定义以下2个模型类
- 在终端执行数据迁移命令:python manage.py makemigrations,生成数据迁移文件
- 在终端执行数据迁移命令:python manage.py migrate index 0001_initial,生成相应的数据表
- 查看生成的两张表:index_personinfo和index_vocation
-
利用批量添加数据命令,添加三条记录
-
查看index_personinfo表
- 给"id=1"设置职业
- 查看index_vocation表
- 在Shell模式下执行命令:PersonInfo.objects.get(id=1).delete()
- 删除成功,总共删除了2条数据,1条是index_personinfo表的记录,1条是index_vocation表的记录
- 查看index_personinfo表
- 查看index_vocation表,级联的记录(外键name_id=1)已被删除
- 添加数据
- 查看index_personinfo表记录
- 添加数据
- 查看index_vocation表记录
- 在Shell模式下执行下列操作
- 可以遍历查询集显示每个人员的详情
在Shell模式下执行下述操作
- 其实,利用列表的切片运算,可以实现更多情况的查询,比如查询第6条记录
- 查询index_vocation表job字段的数据
- 查询index_vocation表job字段的数据
- 查询index_vocation表id=2的记录
- 查询index_vocation表中job='软件开发’的记录
- 查询job='网站设计’或id=3的记录
- 查看index_vocation表
- 查询不是“网站设计”的职业信息
- 查看index_vocation表
- 查询不是“网站设计”的职业信息
- 在职业表里查询“软件开发”的记录数
- 查看index_vocation表
- 在职业表里查询有多少个不同的工作(job)
- 针对全部记录按照id升序排列
- 针对全部记录按照id降序排列
- 按job分组对id求和
aggregate()嵌套使用五个聚合函数:Count()、Sum()、Avg()、Max()、Min()
(1) 按job统计个数 (2) 按payment统计平均 (3) 按payment统计个数、和、平均、最大值和最小值 16.使用union()函数合并多个查询结果- 将两个查询结果合并成一个结果集(payment在5000以下和在15000以上)
- 求两个查询结果的交集(payment在5000以上和payment在15000以下)
- 当前的数据库后端不支持intersection操作
- 查找以下文件:django/django/db/backends/mysql/features.py
- 查看一下django的安装位置:在命令行窗口执行 pip show django
- 按图索骥
找到 supports_select_intersection,将False改为True
- 再次执行两个结果集的交集运算,还是报错
- 变通处理方法1:使用&运算符来求交集
- 变通处理方法2:转成集合来处理交集,再把结果转成列表
- 求vs1(薪水在5000以上)与vs2(薪水在15000以下)的差
- 在features.py文件里将supports_select_difference属性值修改True
- 再次执行求差运算,结果还是要错
- 变通处理方法1:现将查询结果转成集合,进行差运算,再把结果转成列表
- 变通处理方法2:使用“-”运算符求两个集合的差



