在 python Google App Engine 中,如何将模型的所有实体导出到 Google Storage 中的文件以供开发人员使用?
Posted
技术标签:
【中文标题】在 python Google App Engine 中,如何将模型的所有实体导出到 Google Storage 中的文件以供开发人员使用?【英文标题】:In the python Google App Engine, how do I export all the entities of a model to a file in Google Storage for developers? 【发布时间】:2011-09-08 22:45:11 【问题描述】:我在 python GAE 中有大约 90 万个模型实体,我想将其导出为 CSV 文件以进行离线测试。我可以使用 appcfg.py download_data 选项,但在这种情况下,我不想备份到本地机器。我想要一种更快的方法来在 GAE 中创建文件,将其保存到 Google Storage 或其他地方,然后从多台机器上下载。
我假设我需要在任务中执行此操作,因为完成操作可能需要 30 多秒。
class MyModel(db.model):
foo = db.StringProperty(required=True)
bar = db.StringProperty(required=True)
def backup_mymodel_to_file():
#What to do here?
【问题讨论】:
关联实体怎么样? 【参考方案1】:您最好的选择是使用map reduce library 将相关数据导出到 blobstore,然后将完成的文件上传到 Google 存储。
请注意,Google Storage 和 App Engine 之间的集成正在进行中。
【讨论】:
在哪里可以找到使用 mapreduce 将实体数据导出到 blobstore 的示例?我可以找到导出到 blobstore 的示例,但不使用 mapreduce。 使用BlobstoreOutputWriter(在学习了基本的mapreduce框架和工作流程后,如何使用writer就变得很明显了)。 是否可以选择保持顺序或对最终结果进行排序?如果不是,是否意味着维持顺序的唯一方法是将 blobstore 写入作为任务的一部分执行? @Chris 结果是键/值对,并按键排序。 谢谢尼克。我期望一般情况是要导出的实体将按某些属性排序,例如日期。 (MyModel.all().order('date').fetch(5000))。因此,map reduce 操作在写入 blobstore 时需要按日期对结果进行排序。还可行吗?周围有任何 blobstore 写入 + mapreduce 示例吗?【参考方案2】:我知道这是旧的,但我在这里发布了一个使用 App Engine Mapper API 将数据存储区数据转储到 Cloud Storage 的示例: Google App Engine: Using Big Query on datastore?
【讨论】:
以上是关于在 python Google App Engine 中,如何将模型的所有实体导出到 Google Storage 中的文件以供开发人员使用?的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Tasks 和 Google App Engine Python 3
Google App Engine - 大查询 - Python 找不到库 google.cloud
如何在 Google App Engine 中包含第三方 Python 库?
如何从 Python 中的 App Engine 在 Google BigQuery 上创建架构?