0

私はこのスクリプトを持っています

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出力は必要ありません。できるだけ早く行う必要があるだけです。何か考えはありますか?

どうもありがとう!

PS 私はこの興味深いことを発見しました:このコードを使用して2000レコードごとにxml変数を「消去」し、それを別の変数に保存すると、かなり高速に動作します! したがって、以前のコードによると、xml 変数の入力に「問題」があるに違いありません。

result = float(id)/2000
if result == int(result):
  xml_whole += xml
  xml = ""
4

2 に答える 2

0

うわー、コードでテストした後

result = float(id)/2000
if result == int(result):
  xml_whole += xml
  xml = ""

私のスクリプトは最大50 倍高速です。python が xml +=... で非常に遅い理由を知りたいですか?

于 2013-10-20T21:35:35.357 に答える