首页 > 其他 > 详细

Django之ORMselect_related和prefetch_related

时间:2020-05-31 22:21:08      阅读:42      评论:0      收藏:0      [点我收藏+]
 1 # 普通查询
 2 q = models.UserInfo.objects.all()
 3 for row in q:
 4     print(row.name, row.ut.title)  # 每次循环时都会去连表查询
 5 
 6 
 7 # select_related: 查询主动做连表     适合表数据不是特别大
 8 q = models.UserInfo.objects.all().select_related(ut) # ut字段是UserInfo表中ForiginKey外键关联字段
 9 # 相当于  select * from userinfo inner join usertype on ...
11 for row in q:
12     print(row.name, row.ut.title) # 加了select_related()就不会每次去联表查询了
13     
14      
15 # prefetch_related: 不做连表, 做多次单表查询   适合表数据非常大
16 q = models.UserInfo.objects.all().prefetch_related(ut)
17 # select * from userinfo
18 # Django内部: ut_id = [2, 4]     把所有的ut_id整合到一个集合做去重
19 # select * from usertype where id in [2, 4]
20 for row in q:
21     print(row.id, row.ut.title) 

 

Django之ORMselect_related和prefetch_related

原文:https://www.cnblogs.com/xiongfanyong/p/13021866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!