我正在编写从数据库(单表)查询结果的小程序。我正在使用 python 3.3、sqlalchemy 和 postgres 数据库。
result = db_session.query(Data).all()
progress = 0
for row in result:
update_progress_bar(progress, len(result))
do_something_with_data(row)
progress += 1
变量“结果”将包含几千行,数据处理需要一些时间。这就是为什么我引入了简单的进度条来说明需要多长时间。问题是,总时间的 30% 用于查询数据库(第一行)。所以当我开始程序时,我的进度条开始移动之前会有很大的延迟。此外,我不需要将所有结果都保存在内存中。我可以分别处理它们。
有什么方法可以修改上面的程序以逐一获取行,直到收到所有行,而不将所有内容加载到内存中?另外我想监控查询和处理数据的进度。