从docs开始,我知道Query.run()
返回一个可迭代,Query.fetch()
返回一个列表。文档说fetch()
只是run()
的包装器,通常不应该使用,因为它的内存密集程度更高。但是从我(有限)的经验来看,他们做同样的事情:他们让你循环查询结果。为什么fetch()
存在?它的作用是什么,它的作用效率低于run()
?
答案 0 :(得分:2)
run()返回一个iterable,它根据需要发出异步调用,以便在迭代项目时从数据存储区中提取数据。如果不遍历整个结果集,则可能无法返回结果集中的所有实体。
fetch()实质上调用run(),遍历整个结果集并将所有结果放在列表中。
如果你使用fetch(),你将获得列表,然后再次遍历它。
fetch()在绝对必须获取列表中的所有数据并在列表中操作的情况下往往是有益的。