query_set 惰性机制

query_set惰性机制

query_set不会触发sql语句,不用,不取

def orm(req):
    obj_set = models.Book.objects.filter(id=1)
    for i in obj_set:     # 会走一次数据库,会把数据扔到缓存里
        print(i.title)
    return HttpResponse('OK')
    
    if obj_set.exists(): # 会走一次数据库,不会把数据扔到缓存里
        print('kkk')
        
     obj = obj_set[0]  # 切片也会操作数据库

上图第一次for循环时,django查询了数据库,然后把结果存在了缓存里.

你可能感兴趣的:(query_set 惰性机制)