当前位置 : 主页 > 编程语言 > python >

Django(part26)--修改及删除记录

来源:互联网 收集:自由互联 发布时间:2022-06-15
学习笔记,仅供参考 文章目录 ​​数据库的操作(CRUD操作)​​ ​​修改查询记录​​ ​​修改单个实体的某些字段值​​ ​​通过QuerySet批量修改对应的全部字段​​ ​​删除记录

学习笔记,仅供参考



文章目录

  • ​​数据库的操作(CRUD操作)​​
  • ​​修改查询记录​​
  • ​​修改单个实体的某些字段值​​
  • ​​通过QuerySet批量修改对应的全部字段​​
  • ​​删除记录​​
  • ​​删除单个对象​​
  • ​​删除查询结果集​​




数据库的操作(CRUD操作)



修改查询记录



修改单个实体的某些字段值



修改单个实体的某些字段值需要3个步骤:

  • 通过​​get()​​得到要修改的实体对象
  • 通过​​对象.属性​​的方式修改数据
  • 保存
  • 通过​​对象.save()​​保存数据


  • 举个例子

在Django shell中敲入如下代码:

from bookstore import models
author = models.Author.objects.get(id=1)
author.age = 19
author.save()

再查看bookstore_author数据表中的数据:

mysql> select * from bookstore_author;
+----+--------+-----+----------------------+
| id | name | age | email |
+----+--------+-----+----------------------+
| 1 | 山羊 | 19 | goatbishop@gamil.com |
| 2 | 小黄 | 10 | 1033794241@qq.com |
| 3 | 小黑 | 12 | xiaohei@gmail.com |
| 4 | 老山羊 | 25 | darkgoat@gmail.com |
+----+--------+-----+----------------------+
4 rows in set (0.00 sec)

我们发现,山羊的age已经被改为19岁。



通过QuerySet批量修改对应的全部字段



我们可以直接调用查询结果集QuerySet的​​update(属性=值)​​方法实现批量修改

  • 举个例子

我们首先看一下bookstore_book数据表:

mysql> select * from bookstore_book;
+----+-------------------+----------------+
| id | title | pub |
+----+-------------------+----------------+
| 1 | Djangoweb开发实战 | 清华大学出版社 |
| 2 | python | 机械工业出版社 |
| 3 | R | 人民邮电出版社 |
| 4 | 数据处理 | 清华大学出版社 |
| 5 | 算法 | 人民邮电出版社 |
| 6 | 小黄 | 山羊出版社 |
| 7 | 大白 | 山羊出版社 |
+----+-------------------+----------------+
7 rows in set (0.00 sec)

在Django shell中敲入如下代码:

# 将id大于5的所有图书的出版社改为黑山羊出版社
In [22]: books = models.Book.objects.filter(id__gt=5)
...: books.update(pub="黑山羊出版社")
...:
Out[22]: 2

我们再看一下bookstore_book数据表:

mysql> select * from bookstore_book;
+----+-------------------+----------------+
| id | title | pub |
+----+-------------------+----------------+
| 1 | Djangoweb开发实战 | 清华大学出版社 |
| 2 | python | 机械工业出版社 |
| 3 | R | 人民邮电出版社 |
| 4 | 数据处理 | 清华大学出版社 |
| 5 | 算法 | 人民邮电出版社 |
| 6 | 小黄 | 黑山羊出版社 |
| 7 | 大白 | 黑山羊出版社 |
+----+-------------------+----------------+
7 rows in set (0.00 sec)

可以看到bookstore_book数据表已经进行了更新。



删除记录



删除记录是指删除数据库中的一条或多条记录,删除单个Entry对象或删除一个查询结果集(QuerySet)中的全部对象都是调用delete()方法



删除单个对象



删除单个对象的步骤:

  • 查找查询结果对应的一个数据对象
  • 调用这个数据对象的delete()方法实现删除


  • 举个例子

在Django shell 中敲入如下代码:

try:
book = models.Book.objects.get(title="大白")
book.delete()
except:
print(删除失败)

查看bookstore_book数据表:

mysql> select * from bookstore_book;
+----+-------------------+----------------+
| id | title | pub |
+----+-------------------+----------------+
| 1 | Djangoweb开发实战 | 清华大学出版社 |
| 2 | python | 机械工业出版社 |
| 3 | R | 人民邮电出版社 |
| 4 | 数据处理 | 清华大学出版社 |
| 5 | 算法 | 人民邮电出版社 |
| 6 | 小黄 | 黑山羊出版社 |
+----+-------------------+----------------+
6 rows in set (0.00 sec)

很好,已经被删除了。



删除查询结果集



删除单个对象的步骤:

  • 查找查询结果集中满足条件的全部QuerySet查询集合对象
  • 调用查询集合对象的delete()方法实现删除


  • 举个例子

在Django shell 中敲入如下代码:

auths = models.Author.objects.filter(id__gt=2)
auths.delete()

查看bookstore_author数据表:

mysql> select * from bookstore_author;
+----+------+-----+----------------------+
| id | name | age | email |
+----+------+-----+----------------------+
| 1 | 山羊 | 19 | goatbishop@gamil.com |
| 2 | 小黄 | 10 | 1033794241@qq.com |
+----+------+-----+----------------------+
2 rows in set (0.00 sec)

很好!记录已经被删除了。

上一篇:Django(part34)--一对多映射
下一篇:没有了
网友评论