QuerySet数据类型介绍

本文探讨了Django中QuerySet对象的特点与应用,包括其惰性计算特性、缓存机制以及如何通过切片实现分页。介绍了如何利用QuerySet进行高效的数据查询与操作,减少数据库压力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QuerySet与惰性机制

所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行。
QuerySet特点:

  • 可迭代的

  • 可切片

  • 惰性计算和缓存机制

    def queryset(request):
    books=models.Book.objects.all()[:10] #切片 应用分页
    books = models.Book.objects.all()[::2]
    book= models.Book.objects.all()[6] #索引
    print(book.title)
    for obj in books: #可迭代
    print(obj.title)
    books=models.Book.objects.all() #惰性计算—>等于一个生成器,不应用books不会执行任何SQL操作
    #query_set缓存机制1次数据库查询结果query_set都会对应一块缓存,再次使用该query_set时,不会发生新的SQL操作;
    #这样减小了频繁操作数据库给数据库带来的压力;
    authors=models.Author.objects.all()
    for author in authors:
    print(author.name)
    print(’-------------------------------------’)
    models.Author.objects.filter(id=1).update(name=‘张某’)
    for author in authors:
    print(author.name)
    #但是有时候取出来的数据量太大会撑爆缓存,可以使用迭代器优雅得解决这个问题;
    models.Publish.objects.all().iterator()
    return HttpResponse(‘OK’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值