Python 如何从pyodbc结果行创建逗号分隔的字符串?

Python 如何从pyodbc结果行创建逗号分隔的字符串?,python,Python,我有一个存储在cursor.rows中的行的结果集,这些行是从pyodbc.cursor.execute命令返回的。解包数据并将其放入逗号分隔字符串列表(或解包到自定义对象)的最快方法是什么 目前我正在做以下工作: cursor.execute(query_str) f = open(out_file, 'w') for row in cursor: f.write(','.join([str(s) for s in row])) f.write('\n') 这需要每行130毫

我有一个存储在cursor.rows中的行的结果集,这些行是从pyodbc.cursor.execute命令返回的。解包数据并将其放入逗号分隔字符串列表(或解包到自定义对象)的最快方法是什么

目前我正在做以下工作:

cursor.execute(query_str)
f = open(out_file, 'w')
for row in cursor:
    f.write(','.join([str(s) for s in row]))
    f.write('\n')

这需要每行130毫秒,这似乎是一个荒谬的昂贵的操作。如何加快速度?

我会使用
csv
模块:

import csv

cursor.execute(query_str)
with open(out_file, 'w') as f:
    csv.writer(f, quoting=csv.QUOTE_NONE).writerows(cursor)

请注意,如果您
csv.QUOTE\u NONE
a
csv.Error
,如果数据字段中有逗号,则会引发一个
csv.Error
。明智的方法是
csv.QUOTE\u MINIMAL
至少。

130ms/行对我来说似乎很便宜。时间花在哪里?数据库网络?操作系统?您的需求中规定了什么时间线?返回的查询大约有6000条记录。在Win XP、最新型号的dell工作站(T5500)上,将它们写入文件大约需要5-6分钟,因此这不是处理器限制。时间花费在连接中([str(s)代表行中的s]),它为记录中的所有元素调用str函数。我还尝试过限制返回的列数量,将它们从25列减少到15列,实际上这稍微慢一些。如果列数较少,那么您必须研究每个列的数据类型。所有这一切都需要一个巨大的水滴柱占据所有的时间,使这非常非常缓慢。在浪费时间进行“优化”之前,请继续收集数据。请用您的发现更新问题。请避免评论你自己的问题。请用所有事实更新它。它也会