Web框架开发-Django-数据库表的单表查询

本文介绍了Django中对数据库表的管理,包括添加、查询、修改和删除记录的操作。详细讲解了查询API,提供了模糊查询的示例,并强调了delete()方法的注意事项,以及在删除时如何影响关联的对象。此外,还提出了两个章节作业,分别是实现图书管理系统的增删改查功能和查询操作练习。
摘要由CSDN通过智能技术生成

一、添加表记录

对于单表有两种方式

方式一:

1

2

book_obj=models.Book(title="python全栈开发",price=100,publishData="2015-08-08", author='张三', publish='机械工业出版社')

    book_obj.save()

  

方式二:

1

2

# 方式二:

    models.Book.objects.create(title="java全栈开发",price=150,publishData="2018-08-08", author='李四', publish='人民出版社')

  

二、查询表记录

查询相关API

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

# 1、all():查看所有

   book_obj = models.Book.objects.all()

   print(book_obj)     # 打印的结果是QuerySet集合:<QuerySet [<Book: python全栈开发>, <Book: java全栈开发>]>

   # 2、filter():   可以实现且关系,但是或关系需要借助Q查询实现

   # 查不到的时候不会报错

   print(models.Book.objects.filter(title="python全栈开发"))   # 查询书名为“python全栈开发”

   print(models.Book.objects.filter(price="100", author="张三"))

   # 3、get():如果找不到就会报错,如果有多个值,也会报错,只能拿一个值

   print(models.Book.objects.get(title="python全栈开发"))  # 拿的是model对象

   # 4、exclude():排除条件

   print(models.Book.objects.exclude(title="python全栈开发"))  # 查看除了书名是"python全栈开发"的信息

   # 结果:<QuerySet [<Book: java全栈开发>, <Book: PHP全栈开发>, <Book: PHP全栈开发>, <Book: PHP全栈开发>, <Book: PHP全栈开发>]>

   # # 5、values():是queryset的一个方法(把对象转换成字典的形式)

   print(models.Book.objects.filter(title="python全栈开发").values("publish", "author"))   # 查看书名为“Python全栈开发”的出版社和作者

   # 结果:<QuerySet [{'publish': '机械工业出版社', 'author': '张三'}]>

   # 6、values_list():是queryset的一个方法(把对象转成元组形式)

   print(models.Book.objects.filter(title="python全栈开发").values_list("publish", "author"))

   # <QuerySet [('机械工业出版社', '张三')]>

   # 7、order_by():排序

   print(models.Book.objects.all().order_by("id"))

   # # 8、reverse():倒序

   print(models.Book.objects.all().reverse())

   # # 9、distinct():去重(只要结果里面有重复的)

   print(models.Book.objects.filter(title="PHP全栈开发").values("price").distinct())

   # 结果:<QuerySet [{'price': Decimal('100.00')}]>

   # # 10、count():查看有几条记录

   print(models.Book.objects.filter(title="PHP全栈开发").count())

   # # 11、first():返回第一条记录

   print(models.Book.objects.all().first())

   # 12、last():返回最后一条记录

   print(models.Book.objects.all().last())

   # 13、esits:查看有没有记录, 如果有返回True,没有返回False

   #   并不需要判断所有的数据

   if models.Book.objects.all().exists():

       print('ok')

查询表记录—模糊查询

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

ret=models.Book.objects.filter(price__gt=50, price__lt=150) # 查询价格在50到150之间的书籍信息

    print(ret)

    ret = models.Book.objects.filter(price__in=[100, 250, 300])   # 查询价格等于100,250,300的数据

    print(ret)

    ret = models.Book.objects.filter(title__startswith='p')     # 以“p”开头的书名

    print(ret)

    ret = models.Book.objects.filter(title__contains='y')   # 包括“y”的书名

    print(ret)

    ret = models.Book.objects.filter(title__icontains='p')  # 不区分大小写

    print(ret)

    ret = models.Book.objects.filter(publishData__year=2018, publishData__month=8)  # 出版年月为2018年8月的

    print(ret)

  

三、修改表记录:

1

2

ret = models.Book.objects.filter(title="PHP全栈开发").update(title="测试开发全栈开发")

    print(ret)

  

四、删除表记录

删除方法就是delete(),它运行时立即删除对象不返回任何值。

1

2

3

4

ret = models.Book.objects.filter(id="73").delete()

   print(ret)

    

   ret = models.Book.objects.filte

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值