Как бы вы создали строку с разделителями-запятыми из строки результатов pyobbc?

У меня есть набор результатов, хранящихся в 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 мс в строке, что кажется смешной дорогостоящей операцией. Как я могу ускорить это?

Ответ 1

Я бы использовал модуль 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_NONE a csv.Error подняты, если в поле данных есть запятая. Разумным способом было бы csv.QUOTE_MINIMAL по крайней мере.