阅读GAE NDB数据存储区的新文档: https://cloud.google.com/appengine/docs/python/ndb/modelclass#class_methods
get_by_id(id, parent=None, app=None, namespace=None, **ctx_options)
按ID返回实体。这实际上只是
Key(cls, id).get()
的缩写。参数
id
字符串或整数键ID。 parent模型的父键 得到。
app
(关键字arg)应用ID。如果未指定,则获取当前数据 应用
namespace
(关键字arg)命名空间。如果未指定,则获取数据 默认命名空间。
**ctx_options
上下文选项返回模型实例,如果未找到,则返回None。
我发现了这个新的app
参数。这是我很久以前所需要的!!!!!
我只是试图访问app" xxxxxdev"的数据存储区。来自app" xxxxxglobal"但我得到这个错误:
File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/datastore/datastore_rpc.py", line 1373, in check_rpc_success
raise _ToDatastoreError(err)
BadRequestError: app s~xxxxxglobal cannot access app xxxxxxdev's data
我在此链接中添加了帐户服务xxxxxdev@appspot.gserviceaccount.com和xxxxxglobal@appspot.gserviceaccount.com作为彼此的管理员: https://console.cloud.google.com/iam-admin/iam/
但我仍然遇到了这个问题。
任何人都可以帮助我吗?我需要知道在控制面板中我可以向App Engine中的其他应用授予数据存储访问权限。
答案 0 :(得分:1)
目前,ndb不使用Cloud Datastore API,并且在其正常操作模式下无法连接到另一个应用程序的数据存储区 - 它本地连接到应用程序的数据存储区,代码为继续前进。
但是,您可以使用remote api将ndb连接到开发环境中不同应用程序的数据存储区。
目前[{3}}中有一个开放的功能请求,可以从单个应用访问多个数据存储。请随意发布针对ndb的功能请求,尽管从Public Issue Tracker for App Engine开始,这已经是正在处理的内容:
current_app_id = os.environ.get('APPLICATION_ID', None)
if current_app_id and current_app_id != app_id:
# TODO(pcostello): We should support this so users can connect to different
# applications.
raise ValueError('Cannot create a Cloud Datastore context that connects '
'to an application (%s) that differs from the application '
'already connected to (%s).' % (app_id, current_app_id))
os.environ['APPLICATION_ID'] = app_id