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

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中,一行一行地获取数据,只从行中获取一个数字,然后以某种有效的方式进行相加,这是一种方法吗 为了简单起见,这个示例有点做作 我心目中的“可能是内存猪”

我有一个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的问题。