为了账号安全,请及时绑定邮箱和手机立即绑定

sqlalchemy query中的all()方法,会一次性把所有数据弄到内存里??

sqlalchemy query中的all()方法,会一次性把所有数据弄到内存里??

绝地无双 2019-03-30 09:30:37
documentation中说:ReturntheresultsrepresentedbythisQueryasalist.返回实例列表,如果这个表很大很大,那么这个列表岂不是很占内存?实际案例:需要在user表中筛选符合条件的用户,然后随机返回一位。不知道是直接用sqlalchemy的orm做,还是用sql语句做。新手,对mysql不是太懂【感谢亲们的回答。不过我提问的重点在于query中的all()方法,获取的列表,到底是个什么概念。像t=User.query.all(),会把所有user表的记录从数据库全都弄到本地?】
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

先在filter层做过滤,再做limit,这样会不会好些?而且你不是本来就是要先『筛选』吗?
                            
查看完整回答
反对 回复 2019-03-30
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

如果主键是一个自增字段的话,可以用一个全局变量来缓存最大的主键,然后每次查询就从1到这个最大值直接取随机数,用得到的随机数来作为主键查询条件。
                            
查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 770 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号