Python 使用SQLAlchemy从RDBMS查询时的有效内存管理
我有一个web服务,它需要从RDBMS查询10000个数字,然后以json的形式返回它们。这里有两个问题Python 使用SQLAlchemy从RDBMS查询时的有效内存管理,python,memory-management,sqlalchemy,string-concatenation,Python,Memory Management,Sqlalchemy,String Concatenation,我有一个web服务,它需要从RDBMS查询10000个数字,然后以json的形式返回它们。这里有两个问题 如何以有效的方式连接它们?我认为让result+=next id不是个好主意。Stackoverflow的建议是使用.join-它很优雅,但我不确定它如何处理内存分配 据我所知.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中逐行获取数据的方法 那么,你在这里想要什么样的绩效档案?这就像在一个web请求中每秒发生100次一样(只需使用缓存),还是在某个后台作业中发生(应该可以)?10K行不是一个疯狂的数据量,如果这些是小的简单行,也不可怕。在Python中,您将获得的最大成功是单个函数调用,因此对join()的单个调用可能非常好。基本上,任务是0构建web服务(例如,使用flask@app.route('/s/get_data/param1/param2')…返回json),能够以低内存使用率将大量数据从数据库传输到客户端。也就是说,我们每秒有1000个请求,我们希望最大限度地减少每个请求的内存使用。我只是想了解在Python中可以使用什么方法。如果您想要输出10000个记录数据文件,并且需要每秒1000个请求,那么您可能需要缓存数据文件,可能需要根据数据文件的种类在某种异步队列中生成数据文件。是的,我知道缓存。我知道变通办法。我目前正在学习Python,并询问有关Python的问题。