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

lkaoscv7  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(225)

我使用一个简单的脚本从Oracle数据库中提取数据,并使用CSV编写器将数据写入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()
waxmsbnn

waxmsbnn1#

你试过使用csv模块中的writerows函数吗?它不是一个一个的写每条记录,而是提供了一次写所有记录的功能。这应该会加快速度。

data = [] #data rows

with open('csv_file.csv', 'w') as csv_file:
    writer = csv.DictWriter(csv_file)
    writer.writeheader()
    writer.writerows(data)

或者,你也可以使用Pandas模块将大块数据写入CSV文件。这个方法用here的例子来解释。

相关问题