2011-11-13 58 views
0

我想要一個包含我的應用程序存儲的所有電子郵件地址的逗號分隔列表。這是一個普通的要求過大,寫入Blob存儲也是一個太大的要求:使用數據存儲中的屬性編寫文件

class CSVHandler(webapp2.RequestHandler): 
    def get(self): 
     entities = Entity.all().fetch(10000) 
     s = '' 
     for entity in entities: 
      s= s+","+str(entity.email)  
     file_name = files.blobstore.create(mime_type='application/octet-stream')  
     with files.open(file_name, 'a') as f: 
      f.write(s)  
     files.finalize(file_name)  
     blob_key = files.blobstore.get_blob_key(file_name) 

我能做到這一點作爲一個任務,一個隊列,後端還是其他什麼東西呢?

預先感謝您的任何建議

回答

1

不是試圖在單個寫入操作中保存整個文件,而是將它以塊的形式寫入Blobstore。使用csv模塊將使這更容易,讓您逐步寫入它。

+0

感謝您的建議。但是1)如何分割數據?和2)你可以發送一些示例代碼,我應該如何使用CSV模塊?我不明白如何做塊輸出。 –

+1

@Nicke只需將長字符串分成幾個較小的字符串並獨立寫入即可。或者閱讀Python文檔中'csv'模塊的文檔 - 只需將它傳遞給文件direclty即可。 –

+0

謝謝你的回答和評論。這一次爲了快速解決方案,我剛剛使用工具approcket與python 2.7幾乎未修改過的工具approcket同步我的實體,所以現在我有一個方便的Excel文件與我的所有文本數據2008-2011 :-)我也許更幸運如果Google將簡單的備份和導出功能添加到數據存儲控制檯,那麼我不必對此進行編程。 –

1

你或許應該使用內置bulkloader tool,可通過遠程API下載的所有對象,並保存選定字段爲CSV格式。

+0

我也這麼認爲,所以我嘗試了它,它並沒有爲我工作。我想我應該檢查我的項目配置。 –

相關問題