Google app engine 谷歌应用引擎:快照数据库?

Google app engine 谷歌应用引擎:快照数据库?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,嘿,伙计们,我想为我们的登台服务器编写一些代码,通过遍历数据库中的每个模型并以可恢复的方式序列化/取消序列化来“快照”GAE数据库 这不一定是线程安全的,它纯粹是为了演示之类的东西,我们希望它能在高复制数据库上运行 数据库中的数据非常少,只足以运行演示,因此这可能是一个非常肮脏的黑客行为。这听起来像是一个“为我编写代码”的问题 为了给您一个简短的回答,您可以在模型中随意运行for循环(因为您说存储的数据不多),并将所有内容保存为json字符串或可以轻松恢复的内容。您有什么理由不能只使用标准吗?您

嘿,伙计们,我想为我们的登台服务器编写一些代码,通过遍历数据库中的每个模型并以可恢复的方式序列化/取消序列化来“快照”GAE数据库

这不一定是线程安全的,它纯粹是为了演示之类的东西,我们希望它能在高复制数据库上运行

数据库中的数据非常少,只足以运行演示,因此这可能是一个非常肮脏的黑客行为。

这听起来像是一个“为我编写代码”的问题


为了给您一个简短的回答,您可以在模型中随意运行for循环(因为您说存储的数据不多),并将所有内容保存为json字符串或可以轻松恢复的内容。

您有什么理由不能只使用标准吗?您可以告诉它下载所有类型的实体,这样您就不必事先知道它们的名称:

 appcfg.py download_data --application=<app-id> --url=http://<appname>.appspot.com/[remote_api_path] --filename=<data-filename>
appcfg.py下载\u数据--application=--url=http://.appspot.com/[远程\u api\u路径]--文件名=
要上传,您可以执行相反的操作:

appcfg.py upload_data --application=<app-id> --kind=<kind> --filename=<data-filename> <app-directory>
appcfg.py上传\u数据--application=--kind=--filename=

我不完全确定它是否会及时给你一个快照(例如,如果它在完成之前阻止所有新的写入),我会大胆地说“不”,但如果你真的需要一个真正的快照,你可以在应用程序中禁用写入,抓取数据,然后重新启用它(尽管如何做可能有点麻烦)。

我不能做一个模型。all()(它不返回任何结果),所以我必须列出我想手工保存的每个模型,对吗?事实上这是一个很好的问题。我的回答完全忽略了这一方面,因为我自己也不知道答案,假设您的模型是硬编码的,因此,您可以在脚本中手动命名。看起来这对询问者很有效。如果只是需要备份此脚本的特定模型可以修改以执行此操作:2013更新:此解决方案仅适用于主从数据存储。