django中queryset的两大特性

roles = RoleInfo.objects.all()

一、查询集的惰性执行


        创建查询集的时候,是不会访问数据库的,直到真正的调用数据的时候,才会访问数据库,所以 roles = RoleInfo.objects.all(),没有真正的进行数据库查询的,只是创建了一个数据库查询集

调用数据,真正的使用数据:
1、迭代
2、序列化
3、与if合用

 

序列化与反序列化

序列化:将Python数据类型转化成json字符串

反序列化:将json字符串转化成Python数据类型

 

二、查询缓存机制

 

[obj.name for obj in RoleInfo.objects.all()]

[obj.name for obj in RoleInfo.objects.all()]

当前状态下,两次在进行列表推导式的过程中,分别对查询集进行了连接数据库的查询操作,两次都连接了数据库,但是两次的查询结果是一致的,增加了数据库的负载,每一次都对数据库进行了交互。

Django的查询集会有缓存机制,当第一次真正连接数据库查询的时候,会将结果进行缓存,每一次使用查询结果的时候,就可以重用查询集,减少了交互

案例:

role_set = RoleInfo.objects.all()
[obj.name for obj in role_set]
[obj.name for obj in role_set]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值