我想备份数据存储区中的所有用户数据。我的应用程序使用新的命名空间功能为每个用户提供多租户(根据文档中的示例)。
批量加载程序需要每个客户的命名空间才能下载数据。我没有保留用户列表,因此我无法生成名称空间。有没有检测所有当前使用的命名空间的方法?
答案 0 :(得分:16)
自SDK 1.4.0以来,您可以使用Metadata Queries:
from google.appengine.ext.db import metadata
for ns in metadata.get_namespaces():
print "namespace: '%s'" % ns.namespace_name
对于NDB,导入略有不同:
from google.appengine.ext.ndb import metadata
答案 1 :(得分:6)
现在还有一个get_namespaces()函数:
from google.appengine.ext.db import metadata
namespaces = metadata.get_namespaces()
get_namespaces()返回Namespace个对象的列表。文档还指出“获取有关命名空间,种类和属性的信息的元数据查询通常执行起来很慢。”
答案 2 :(得分:4)
ndb
from google.appengine.ext.ndb import metadata
all_namespaces = [ns for ns in metadata.get_namespaces()]
datastore
query = client.query(kind='__namespace__')
query.keys_only()
all_namespaces = [entity.key.id_or_name for entity in query.fetch()]
答案 3 :(得分:1)
没有API来获取命名空间列表。您必须记录您使用的记录。我特意使用了一个模型。