如何从命令行访问Google App Engine开发服务器数据

时间:2011-08-23 19:47:54

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

我会定期在本地下载我的Google App Engine生产数据(使用基本上调用appcfg.py download_data的自定义脚本)并将其上传到开发服务器,以便我的开发环境中的数据与生产相匹配。您可以在Launchpad上找到这些脚本:

这是启动器脚本的作用:

  • 启动开发服务器(刷新数据库)
  • 将以前下载的模型加载到本地数据库
  • 更改所有普通用户和管理员用户的密码,以便我们可以为开发环境中的任何用户使用密码“toto”登录。这是通过script that accesses the freshly-loaded datastore data直接完成的。

一切正常,直到GAE 1.5.2。此时,开发服务器已更改为前缀dev~,因此我添加了--default_partition=''以启动开发服务器。但是现在密码更改脚本似乎无法访问已加载的数据,它总是为普通用户或管理员用户返回0个实体。我想知道如何从命令行访问数据,所以显然不是来自url,以防止在生产服务器上发生这种情况。 ./extra中的脚本未上传到GAE,因此无法从那里执行。

为了给你一个想法(但是看一下脚本以获得更多上下文),这就是脚本用来做的事情(并且直到GAE< = 1.5.1才开始工作):

args, option_dict = ParseArguments(['', colCasaBasePath])
config, matcher = LoadAppConfig(colCasaBasePath, {})
SetupStubs(config.application, **option_dict)

可以正常访问应用程序的模型:

from src.models import WebUser, ScyllaUser
for tipo in (WebUser, ScyllaUser):
    usuarios = tipo.all()
    # Now len(usuarios) == 0

改变了什么(在GAE 1.5.1之后)打破了我的GAE数据访问脚本?你会如何执行这样的工作流程?

1 个答案:

答案 0 :(得分:0)

诀窍是在访问GAE数据的脚本中将--default_partition=参数添加到ParseArguments()调用中:

args, option_dict = ParseArguments(['', colCasaBasePath, "--default_partition="])

请注意=之后没有任何内容,这就是让我失望的原因。我首先尝试添加"--default_partition=''",但这没有任何效果(但也没有导致错误)。

添加该调用后,脚本再次能够遍历已在dev数据存储区中加载的所有用户。你可以看到我必须做出的更改on Launchpad