QuerySet与惰性机制
所谓惰性机制:Publisher. s.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它并不会马上执行sql,而是当调用QuerySet的时候才执行。
QuerySet特点:
-
可迭代的
-
可切片
-
惰性计算和缓存机制
def queryset(request):
books=models.Book. s.all()[:10] #切片 应用分页
books = models.Book. s.all()[::2]
book= models.Book. s.all()[6] #索引
print(book. )
for obj in books: #可迭代
print(obj. )
books=models.Book. s.all() #惰性计算—>等于一个生成器,不应用books不会执行任何SQL操作
#query_set缓存机制1次数据库查询结果query_set都会对应一块缓存,再次使用该query_set时,不会发生新的SQL操作;
#这样减小了频繁操作数据库给数据库带来的压力;
authors=models.Author. s.all()
for author in authors:
print(author.name)
print(’-------------------------------------’)
models.Author. s.filter(id=1).update(name=‘张某’)
for author in authors:
print(author.name)
#但是有时候取出来的数据量太大会撑爆缓存,可以使用迭代器优雅得解决这个问题;
models.Publish. s.all().iterator()
return HttpResponse(‘OK’)
继续阅读与本文标签相同的文章
解锁数据连接密码,力维“泛在连接平台”正式发布
-
斩获三个“全国第一”,漳州有一家“隐形冠军”企业
2026-05-18栏目: 教程
-
经历8个月改造,岗顶百脑汇“转型回归”
2026-05-18栏目: 教程
-
ROKU流媒体聚合平台终将变革电视机操作系统和流媒体的观看方式
2026-05-18栏目: 教程
-
权威报告:中国专利申请连续8年居首,占世界一半
2026-05-18栏目: 教程
-
新技术:AI可快速准确检测因糖尿病造成的视网膜病变
2026-05-18栏目: 教程
