Django讲课笔记09:使用QuerySet新增和更新数据
Posted howard2005
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django讲课笔记09:使用QuerySet新增和更新数据相关的知识,希望对你有一定的参考价值。
文章目录
零、本讲学习目标
- 掌握Shell下新增数据的7种方式
- 掌握Shell下更新数据的6种方式
一、课程导入
- 什么是ORM(对象关系映射)
- makemigrations根据模型创建数据迁移文件
- migrate使数据库状态与当前模型集和迁移集同步
- 导出数据命令 - dumpdata
- 导入数据命令 - loaddata
二、新课讲授
Django对数据库的数据进行增、删、改操作是借助内置ORM框架所提供的API方法实现的,简单来说,ORM框架的数据操作API是在QuerySet类里面定义的,然后由开发者自定义的模型对象调用QuerySet类,从而实现数据操作。
(一)使用QuerySet新增数据
- Django提供了多种数据新增方法,开发者可以根据实际情况以及个人使用习惯选择某一种新增方式。为了更好地演示数据库的增、删、改操作,在项目babies使用Shell模式(启动命令行和执行脚本)进行讲述,该模式方便开发人员开发和调试程序。
- 在PyCharm的Terminal下开启Shell模式,输入python manage.py shell指令即可,如下图所示。
1、使用实例化 - 赋值 - save新增数据
- 在Shell模式下,若想对数据表commodity_types新增数据,则可输入以下代码实现
- 新增数据步骤:导入模型 —— 实例化 —— 属性赋值 —— 调用save()方法保存数据
- 查看commodity_types数据表,看是否新增一条记录
2、使用create新增数据
- 依次执行下列语句
- 查看commodity_types数据表,看是否新增一条记录
3、使用字典与create新增数据
- 依次执行下述命令
- 查看commodity_types数据表,看是否新增一条记录
4、使用实例化赋值 - save新增数据
- 依次执行下述命令
- 查看commodity_types数据表,看是否新增一条记录
5、使用get_or_create新增无重数据
- 在执行数据新增时,为了保证数据的有效性,我们需要对数据进行去重判断,确保数据不会重复新增。以往的方案都是对数据表进行查询操作,如果查询的数据不存在,就执行数据新增操作。为了简化这一过程,Django提供了get_or_create方法。
- 只要有一个模型字段的值与数据表的数据不相同(除主键之外),就会执行数据新增操作。
- 如果每个模型字段的值与数据表的某行数据完全相同,就不执行数据新增,而是返回这行数据的数据对象,比如对上述的字典d重复执行get_or_create,第一次是执行数据新增(若执行结果显示为
True
,则代表数据新增),第二次是返回数据表已有的数据信息(若执行结果显示为False
,则数据表已存在数据,不再执行数据新增) - 查看commodity_types数据表,看是否新增一条记录
6、使用update_or_create新增或更新数据
- update_or_create是根据字典d的内容查找数据表的数据,如果能找到相匹配的数据,就执行数据修改,修改内容以字典格式传递给参数
defaults
即可;如果在数据表找不到匹配的数据,就将字典d的数据新增到数据表里。 - 第一次是新增数据
- 查看commodity_types数据表
- 第二次是修改数据
- 查看commodity_types数据表
7、使用bulk_break批处理添加数据
- 在使用bulk_create之前,数据类型为模型Types的实例化对象,并且在实例化过程中设置每个字段的值,最后将所有实例化对象放置在列表或元组里,以参数的形式传递给bulk_create,从而实现数据的批量新增操作。
- 查看commodity_types数据表
三、课堂小结
四、课后作业
五、拓展内容
以上是关于Django讲课笔记09:使用QuerySet新增和更新数据的主要内容,如果未能解决你的问题,请参考以下文章