如何在块中查询sqlalchemy?

时间:2017-10-19 20:03:28

标签: python postgresql sqlalchemy psycopg2

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 docs读取我推断(正确?),当它们全部可用时,它会一次处理所有行。如何在多行查询中查询和处理块以使这项工作更快?

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

1 个答案:

答案 0 :(得分:0)

您可以使用stream_results

来避免加载查询的整个结果集
engine.execution_options(stream_results=True)

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