2017-10-19 92 views
0

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 Trueitertools块。从远程数据库获取多行的建议方法是什么?

回答

0

你能避免使用stream_results装载的查询的整个结果:

engine.execution_options(stream_results=True) 

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