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 文件。此处通过示例解释此方法。
| 归档时间: |
|
| 查看次数: |
4752 次 |
| 最近记录: |