gpt4 book ai didi

python - 访问相关的对象键而不在 App Engine 中获取对象

转载 作者:太空狗 更新时间:2023-10-29 21:33:00 26 4
gpt4 key购买 nike

一般来说,对给定对象执行单个查询比执行多个查询要好。假设我有一堆“儿子”对象,每个对象都有一个“父亲”。我得到了所有的“儿子”对象:

sons = Son.all()

然后,我想获取那组儿子的所有父亲。我这样做:

father_keys = {}
for son in sons:
father_keys.setdefault(son.father.key(), None)

然后我可以这样做:

fathers = Father.get(father_keys.keys())

现在,这假定 son.father.key() 实际上并没有去获取对象。我错了吗?我有一堆代码假设 object.related_object.key() 实际上并没有从数据存储中获取 related_object。

我这样做对吗?

最佳答案

您可以通过研究appengine.ext.db 的来源找到答案。在您下载的 App Engine SDK 源代码中——答案是,不,没有您需要的特殊外壳:__get__ 方法(1.3.0 SDK 源代码中的第 2887 行) ReferenceProperty 描述符的调用 before 知道 .key() 或其他任何东西稍后是否会在结果上被调用,所以它只是不没有机会进行您想要的优化。

但是,请参阅第 2929 行:方法 get_value_for_datastore 确实完全按照您的意愿行事!

具体来说,使用 Son.father.get_value_for_datastore(son) 而不是 son.father.key(),你应该很多结果更快乐;-).

关于python - 访问相关的对象键而不在 App Engine 中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075951/

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