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

时间:2018-07-04 12:22:26

标签: python peewee

Peewee在iterating over lots of rows上的文档目前描述了两种可行的优化方法。

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

第二个选项建议使用selectdicts()namedtuples()objects()调用tuples()是一种速度优化,因为它可以防止Peewee重建模型图。

我的问题:

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

那孤独的小代码是我文档底部的答案吗?

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

1 个答案:

答案 0 :(得分:1)

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

您可以轻松地编写:

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

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

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