发布时间:2022-10-04 文章分类:编程知识 投稿人:王小丽 字号: 默认 | | 超大 打印

2022-09-30

删除数据:

方式一:

打开pycharm,进入虚拟环境,进入shell环境(python manage.py shell)。

删除数据,接上面的笔记——“学习笔记——Django项目的新增数据、修改数据”

导入模块:

from book.models import BookInfo1

查找到要删除的数据:

book = BookInfo1.objects.get(id = 3)

进行删除操作:

book.delete()

-----------------------

方式二:

同理导入模块,找到并删除的操作

BookInfo1.objects.filter(id = 5).delete()

查询是否删除,可以先打开终端,进入MySQL(mysql -uroot -p),输入密码,进入存放表的数据库,先查看表的信息存储,进行删除操作后,再次查看表中记录中指定的记录是否删除成功(select * from book_bookinfo1)

-----------------------------------------------------

在shell中查询数据(基础查询):

1、查询指定的数据

导入模块后,进行查询

BookInfo1.objects.get(id = 1)

  说明:在shell中执行该语句,返回的是这个表中的一个对象。

如果查询的数据在存储表中不存在,那么会出现异常,因此此处的查询可以增加一个“try...except”捕获异常的结构。例:

try:
    BookInfo1.objects.get(id = 100)
except Exception as e:
    print(e)

捕获到的异常为:

学习笔记——Django项目的删除数据、查询数据(filter、get、exclude)

可增加系统功能的强健性。

2、查询表中的所有记录

导入模块

BookInfo1.objects.all()

  说明:执行该语句,返回的包含所有对象的一个列表。这里的“每一个对象”指的就是插入的“每一条记录”。

3、查询表里面记录的个数:

导入模块

BookInfo1.objects.count()

或者是

BookInfo1.objects.all().count()

输出的结果是一样的。

-----------------------------

filter、get、exclude查询

说明:

filter: 查询返回的是一个结果集列表,列表内的个数可以为0/1/n

get: 查询返回的结果是一个对象

exclude: 查询除了符合条件之外的记录,返回的是一个列表。

(1)查询编号为1的图书

BookInfo1.objects.get(id=1)

  注:objects相当与“增删改查”的代理。

也可以为:

BookInfo1.objects.filter(id__exact = 1)

  注:其中“字段名__检索要求”是标准写法。

(2)查询书籍名称中包含“小”的图书

BookInfo1.objects.filter(name__contains = "")

(3)查询数据名称末尾是“传”的图书

BookInfo1.objects.filter(name__endswith = "")

  注:此处是两个下划线。

(4)查询书籍名称为空的记录

BookInfo1.objects.filter(name__isnull = True)

  注:此处判断为空的结果是一个boolean类型的值。

(5)查询编号为1,3,5的图书

BookInfo1.objects.filter(id__in = [1,3,5])

(6)查询大于编号3的图书

BookInfo1.objects.filter(id__gt = 3)

  说明:gt:是大于;gte:是大于等于;lt:是小于;lte:是小于等于。

(7)查询除了编号为3的图书

BookInfo1.objects.exclude(id__exact = 1)

(8)查询出版时间在2000年的图书

BookInfo1.objects.filter(pub_date__year = "2000")

  注:判断“年”时,要使用的是“__year”

(9)查询出版时间在“2000-01-01”之后的图书

BookInfo1.objects.filter(pub_date__gt = "2000-01-01")