我有这个脚本
SELECT = """
select
coalesce (p.ID,'') as id,
coalesce (p.name,'') as name,
from TABLE as p
"""
self.cur.execute(SELECT)
for row in self.cur.itermap():
id = '%(id)s' % row
name = '%(name)s' % row
xml +=" <item>\n"
xml +=" <id>" + id + "</id>\n"
xml +=" <name>" + name + "</name>\n"
xml +=" </item>\n\n"
#save xml to file here
f = open...
我需要将数据从大型数据库保存到文件。我的数据库中有10 000个(最多40000个)项目,脚本运行(1小时或更长时间)需要很长时间才能完成。
如何从数据库中获取我需要的数据并将其“立即”保存到文件中? (尽可能快?我不需要xml输出,因为我可以稍后处理我服务器输出的数据。我只需要尽快完成。任何想法? )
非常感谢!
P.S。 我发现了这个有趣的事情:当我使用这段代码每隔2000条记录“擦除”xml变量并将其保存到另一个变量时,它的工作速度非常快!因此,根据我之前的代码,填写xml变量必定存在“错误”。
result = float(id)/2000
if result == int(result):
xml_whole += xml
xml = ""
答案 0 :(得分:0)
result = float(id)/2000
if result == int(result):
xml_whole += xml
xml = ""
我的脚本最快 50x ! 我想知道为什么python这么慢,xml + = ...?
答案 1 :(得分:0)
你正在做很多不必要的工作(但是,如果你删除xml
变量,你就不会像以前那样写相同的数据了......)
为什么不直接编写XML?您也可以避免使用两个COALESCE
,并在Python中编写该检查(如果ID为null,则生成id''等。)
SELECT = """
select
coalesce (p.ID,'') as id,
coalesce (p.name,'') as name,
from TABLE as p
"""
self.cur.execute(SELECT)
# Open XML file
f = open("file.xml", ...)
f.write("<?xml version... (what encoding?)
for row in self.cur.itermap():
f.write("<item>\n <id>%(id)s</id>\n <name>%(name)s</name>\n</item>\n"
# Other f.writes() if necessary
f.close()