使用SQLAlchemy从RDBMS查询时的有效内存管理

2024-05-16 22:08:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个web服务,需要从RDBMS中查询10000个数字,然后以json的形式返回它们。这里有两个问题。你知道吗

  1. 如何有效地连接它们?我认为让result+=next id不是个好主意。Stackoverflow建议使用.join-它很优雅,但我不确定它如何处理内存分配
  2. 据我所知.fetchAll()在这里可能很贵,因为它是缩写

Python中的一种方法是逐行获取数据,只从行中获取一个数字,然后以某种有效的方式将结果相加。你知道吗

为了简单起见,这个样本有点做作。你知道吗

我心目中的“大概是记忆猪”的简短解决方案大致如下:

s = text("select id from users where ... ")
connection = engine.connect()
with connection :
    rows = connection.execute(s).fetchall()
    return "["+','.join(str(r[0]) for r in rows) + "]" # json array

我知道这一切看起来都是人为的,一次处理10000条记录不是一个好主意,但我想了解Python内存管理器的最佳实践。你知道吗

在我所处的Java世界中,有一个类StringBuilder和从DB中逐行获取数据的方法。你知道吗


Tags: 方法内存webidjson数字resultconnection