【问题标题】:Writing a file with properties from the datastore使用数据存储中的属性写入文件
【发布时间】:2011-11-13 20:29:44
【问题描述】:

我想要我的应用程序存储的所有电子邮件地址的逗号分隔列表。对于常规请求来说太大了,将其写入 blobstore 也是一个太大的请求:

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)

我可以将其作为任务、队列、后端或其他东西来代替吗?

提前感谢您的任何建议

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore csv


    【解决方案1】:

    与其尝试在单个写入操作中保存整个文件,不如将其以块的形式写入 blobstore。使用csv 模块将使这更容易,允许您逐步编写它。

    【讨论】:

    • 感谢您的建议。但是 1)我如何对数据进行分区? 2)您能否发送一些示例代码,我应该如何使用 CSV 模块?我不明白如何分块输出。
    • @Nicke 只需将长字符串分成几个较小的字符串并独立编写。或者阅读 Python 文档中csv 模块上的文档 - 只需将文件直接传递给它。
    • 感谢您的回答和 cmets。这次是为了一个快速的解决方案,我只是使用几乎未修改的与 python 2.7 一起使用的工具 approcket 将我的实体与 MySQL 同步,所以现在我有一个方便的 Excel 文件,其中包含我所有的文本数据 2008-2011 :-) 我也可能更幸运如果 Google 将简单的备份和导出功能添加到数据存储控制台,那么我就不必对此进行编程了。
    【解决方案2】:

    您可能应该使用内置的bulkloader tool,它可以通过远程 API 下载所有对象并将选定的字段保存为 CSV 格式。

    【讨论】:

    • 我也是这么想的,所以我试了一下,它对我不起作用。我想我应该检查我的项目配置。
    猜你喜欢
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2023-04-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多