繁体   English   中英

用Peewee最快和最有效的内存选择()数据的方法吗?

[英]Fastest and most memory efficient way to select() data with Peewee?

Peewee的有关遍历许多行的文档目前描述了两种可用的优化方法。

第一个select.iterator()选项似乎是内存优化。

第二个选项建议使用dicts()namedtuples()objects()tuples()调用select是一种速度优化,因为它避免了Peewee不得不重建模型图。

我的问题:

  • 这些方法是否互斥? 例如,似乎调用dicts()会为大型结果集返回大量的字典,因此内存效率不高。
  • 如何结合这两种优化,以便快速且以最小的内存迭代结果集?

是文档底部的那个寂寞的小代码示例我的答案吗?

for stat in stats.objects().iterator():
    serializer.serialize_object(stat)

它们不是互斥的,可以合并。 文档中的示例显示了将“ objects()”(使用平面模型实例,如果您要重构多个模型,则很快)和“ iterator()”(有助于减少内存使用)的组合。

您可以轻松地编写:

for stat in stats.tuples().iterator():
    # whatever

如果只想使用普通的数据库游标,则可以编写:

stats = Stat.select().etc()
cursor = database.execute(stats)
for row_tuple in cursor:
    # do whatever

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM