Python:CSV 编写器非常慢,需要建议来加快速度

Spa*_*aak 7 python csv performance

我使用一个简单的脚本从 Oracle DB 中提取数据,并使用 CSV writer 将数据写入 CSV 文件。

我正在查询的表包含大约 25k 条记录,脚本运行完美,只是实际上非常慢。需要 25 分钟才能完成。

我可以通过什么方式通过更改代码来加快速度?欢迎各位大侠指教。

#
# Load libraries
#
from __future__ import print_function
import cx_Oracle
import time
import csv

#
# Connect to Oracle and select the proper data
#
con = cx_Oracle.connect('secret')
cursor = con.cursor()
sql = "select * from table"

#
# Determine how and where the filename is created
#
path = ("c:\\path\\")
filename = time.strftime("%Y%m%d-%H%M%S")
extentionname = (".csv")
csv_file = open(path+filename+extentionname, "w")

writer = csv.writer(csv_file, delimiter=',', lineterminator="\n", 
quoting=csv.QUOTE_NONNUMERIC)

r = cursor.execute(sql)
for row in cursor:
    writer.writerow(row)

cursor.close()
con.close()
csv_file.close()
Run Code Online (Sandbox Code Playgroud)

小智 0

您是否尝试使用writerowscsv 模块中的函数?它不是逐条写入每条记录,而是提供一次性写入所有记录的规定。这应该把事情搞定。

data = [] #data rows

with open('csv_file.csv', 'w') as csv_file:
    writer = csv.DictWriter(csv_file)
    writer.writeheader()
    writer.writerows(data)
Run Code Online (Sandbox Code Playgroud)

或者,您也可以使用 pandas 模块将大块数据写入 CSV 文件。此处通过示例解释此方法。

  • 我可以有这方面的资料吗?AFAIK 只要您拥有“open”返回的文件描述符,文件就会保持打开状态 (2认同)