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

学习笔记,仅供参考




数据库的操作(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 | [email protected] |
|  2 | 小黄   |  10 | [email protected]    |
|  3 | 小黑   |  12 | [email protected]    |
|  4 | 老山羊 |  25 | [email protected]   |
+----+--------+-----+----------------------+
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 | [email protected] |
|  2 | 小黄 |  10 | [email protected]    |
+----+------+-----+----------------------+
2 rows in set (0.00 sec)

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

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/106882241
今日推荐