学习笔记,仅供参考
数据库的操作(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)
很好!记录已经被删除了。