如何以块为单位查询 sqlchemy



sqlalchemy 如何处理缓冲/分块?

with open('out', 'w') as f: 
    query = table.select()
    for row in engine.execute(query): 
        output_row = make_row_string(row)
        print(output_row, file=f)

从 ResultProxy 文档中读取,我推断(正确吗?)当所有行都可用时,它会立即处理所有行。如何在块中进行查询和处理,以使多行查询的此作业更快?

我处理多行查询的两个想法是.fetchmany(chunksize) while True,或itertools块。从远程数据库获取多行的推荐方法是什么?

您可以使用stream_results来避免加载查询的整个结果集:

engine.execution_options(stream_results=True)

请注意,流式处理结果可能不会使查询更快 - 它只会使查询使用更少的内存。另请注意,如果您的输出格式为 CSV,则使用 COPY 的速度要快得多。

最新更新