删除数据
删除所有数据
在终端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以下)的差
(未完待续)