如何以块的形式查询sqlalchemy?
问题描述:
sqlalchemy如何处理缓冲/分块?如何以块的形式查询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
块。从远程数据库获取多行的建议方法是什么?
答
你能避免使用stream_results
装载的查询的整个结果:
engine.execution_options(stream_results=True)
注意,结果流可能不会使查询得更快 - 它才有它使用较少的内存。另请注意,如果您的输出格式为CSV,则使用COPY
要快得多。