如何从我的本地开发服务器访问生产数据存储?

How do I access Production Datastore from my local development server?

我在 Google App Engine 中为 Python 部署了一个现有网站。现在我已经在我的系统中设置了本地开发服务器。但我不知道如何从实时服务器获取更新的数据库。 Google 的开发者控制台中没有导出选项。

而且,我不想从 Production Datastore 读取每个请求的数据,我想在本地设置一次。 google 手册说它将本地数据存储存储在 sqlite 文件中。

如有任何提示,我们将不胜感激。

首先,请确保您的 app.yaml 启用了内置的 "remote",并使用如下节:

builtins:
- remote_api: on

这个 app.yaml 当然必须是部署到您的 appspot.com(或其他)"production" GAE 应用程序的那个。

然后,这是 /usr/local/google_appengine/bulkloader.py 或您安装 bulkloader 组件的任何地方的工作。 运行 它与 -h 一起获取您可以传递的许多选项的列表。

您可能需要在 google 帐户页面上为此用途生成应用程序专用密码。那么,一般的用法是这样的:

/usr/local/google_appengine/bulkloader.py --dump --url=http://your_app.appspot.com/_ah/remote_api --filename=allkinds.sq3

您可能(还)无法使用此 "all kinds" 查询 -- 服务器只生成所有类型查询 "periodically" 所需的统计信息,因此您可能会收到一条错误消息包括以下信息:

[ERROR   ] Unable to download kind stats for all-kinds download.
[ERROR   ] Kind stats are generated periodically by the appserver
[ERROR   ] Kind stats are not available on dev_appserver.

如果是这样,那么您仍然可以通过为每种类型重复添加选项 --kind=EntityKind 和 运行 bulkloader(使用单独的 sqlite3 结果文件)来获得东西 "one kind at a time"实体。

一旦你倾倒了生产数据存储(如果需要的话,一个一个地倾倒,如果可以的话一次全部倾倒),你可以再次使用批量加载器,这次使用 --restore 并寻址你的本地主机 dev_appserver实例,重建后者的数据存储。

应该可以在 --kind 标志中明确列出种类(通过用逗号分隔它们并将它们全部放在括号中)但不幸的是我想我'我发现了一个阻止它工作的错误——我会尽力修复它,但不要屏住呼吸。无论如何,这个特性没有记录(我只是通过研究 bulkloader.py 的开源版本发现的)所以最好不要依赖它!-)

有关当时新的 bulkloader 的更多信息可以在 Nick Johnson 的 post 博客 http://blog.notdot.net/2010/04/Using-the-new-bulkloader (though it doesn't cover newer functionalities such as the sqlite3 format of results in the "zero configuration" approach I outlined above). There's also a demo, with plenty of links, at http://bulkloadersample.appspot.com/ 中找到(唉,也有点过时了)。

查看 remote API。这将通过 HTTP 将您的数据库调用隧道传输到生产数据库。