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 True
或itertools
块。从远程数据库获取许多行的推荐方法是什么?
答案 0 :(得分:0)
您可以使用stream_results
engine.execution_options(stream_results=True)
请注意,流式搜索结果可能不会让查询更快 - 它只会减少内存使用量。另请注意,如果您的输出格式为CSV,则使用COPY
要快得多。