gpt4 book ai didi

google-app-engine - 谷歌应用引擎 : Odd get_by_key_name behavior

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:50 24 4
gpt4 key购买 nike

更新:经过进一步测试,这个问题似乎影响了我的实体组中的所有子实体。所有这些不同实例的根父级是用户类型,这是我自己创建的,而不是内置的用户类型。从子 Kind 的构造函数中删除 parent=user 后,get_by_key_name 将按预期工作。但是,如果可能的话,我希望能够将实体组功能与定义的键一起使用。

--你好,我试图在我的 GAE 项目中使用定义的键名来加快查询速度。

但是,我遇到了一个奇怪的问题,我无法获取它们的 key 。此代码似乎不起作用:

for l in Logins.all().fetch():
print Login.get_by_key_name(l.key().name())

一些注意事项:

  • 我只在 SDK 中测试过
  • l.key().name() 当我查看数据存储时返回与实体一起列出的键名称字符串。我可以从数据故事中复制并粘贴字符串并将其用作 get_by_key_name() 的参数,但这也不起作用。

  • 登录类型的键名均以“l”为前缀(即小写的“L”),其他情况下均为小写,可能包含下划线或破折号,但不超过 500 字节。

    <
  • 其他类型的搜索与此类似。

  • 关键是登录类型的 2 个属性的插值,我可以使用常规 .filter() 方法很好地获取对象
  • 实例的“父级”是一个用户类。 (提及以防这对我必须获取的方式有影响)

所以我不得不问,有什么明显的原因导致这行不通吗?使用 SDK 搜索键名有任何已知问题吗?

最佳答案

您的第二条评论是正确的,AFAIK。父/子关系类似于文件系统中的目录或文件夹结构。您的 key (概念上)是 /parents/[parent_keyname]/logins/[login_keyname]。因此,如果您尝试获取 /logins/[login_keyname],您将得不到您的实体。 (没有规定所有 Login 必须是 Parent 的子级;`get_by_key_name() 每次都必须告知父级关系。)

在我自己的代码中,我最终使用 Key.from_path() 自己构建了我的 key 。我使用类方法,例如Login.key_for_name(some_parent, some_name)Login.get_by_key_name_for_parent(some_parent, some_name)(好吧,我的方法名称较短,但只是为了清楚起见。然后至少它我不可能生成具有错误父/子关系的 key 。

关于google-app-engine - 谷歌应用引擎 : Odd get_by_key_name behavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2179275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com