GAE上传数据/导入数据到localhost,以便在我的开发服务器上进行测试

时间:2014-01-19 19:53:53

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

我需要在推送到生产之前在我的本地开发服务器上测试一些更改。这样做需要在我的本地机器上拥有完整的数据集。

一位同事指示我:

  

https://developers.google.com/appengine/docs/python/tools/uploadingdata?csw=1

我使用管理员的用户名和密码下载了数据,但遗憾的是,我无法将数据上传到我的localhost“dev”应用引擎服务器。

从命令行执行此命令:

appcfg.py upload_data --filename=../data/data1.dat --url=http://localhost:9080/_ah/remote_api ./

其中:

  • 9080是我应用的本地主机副本上的应用程序端口
  • 我从我的app目录
  • 运行此命令
  • 将下载的数据存储在相对目录中 ../数据/ data1.dat

收到此错误:

raise _ToDatastoreError(err)
google.appengine.api.datastore_errors.BadRequestError: app "dev~appname" cannot access app "appname"'s data

1 个答案:

答案 0 :(得分:2)

更新:似乎答案就像在upload_data调用中添加以下内容一样简单:

--application="dev~appname"

谢谢@DavidBennett。

原始答案:(也可以)

在对SO和code.google.com进行大量搜索后,我发现有效的解决方案是对此问题的评论:

  

devappserver2, remote_api, and --default_partition

我使用了问题中描述的原始命令:

appcfg.py upload_data --filename=../data/data1.dat --url=http://localhost:9080/_ah/remote_api ./

我提示时输入的用户名和密码是我的应用用户名(在我的情况下,我的电子邮件)和相应的密码。 (如果这不起作用,你可能想根据我读过的其他评论尝试空白或test@example.com,但没有测试过这个理论。)

我还使用以下标志重新启动了我的应用引擎:(不要忘记在下次重新启动服务器时删除该标志)(您可能想尝试不使用此标志,因为我无法确认它影响任何东西 - 我在这里包括它,因为它是我使用的设置。)

--clear_datastore=yes

评论者建议删除此文件中第84行的本地服务器代码中的“dev~”:

google/appengine/tools/devappserver2/application_configuration.py, line 84

其中:

  • 该基本目录' google'位于:

    /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine /

  • 假设您的GoogleAppEngineLauncher.app目录位于Mac上的“应用程序”目录中

重要信息:重新启动本地应用引擎服务器,以使更改生效。