加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 实体组,ReferenceProperty或键作为字符串

发布时间:2020-12-20 11:18:10 所属栏目:Python 来源:网络整理
导读:在gae平台上构建一些应用程序之后,我通常在数据存储区中的基本上每个应用程序中使用不同模型之间的某种关系.而且我经常发现自己需要查看同一父母的记录(比如匹配同一父母的所有条目) 从一开始我就使用db.ReferenceProperty来实现我的关系,例如: class Foo(d
在gae平台上构建一些应用程序之后,我通常在数据存储区中的基本上每个应用程序中使用不同模型之间的某种关系.而且我经常发现自己需要查看同一父母的记录(比如匹配同一父母的所有条目)

从一开始我就使用db.ReferenceProperty来实现我的关系,例如:

class Foo(db.Model):
    name = db.StringProperty()

class Bar(db.Model):
    name = db.StringProperty()
    parentFoo = db.ReferanceProperty(Foo)

fooKey = someFooKeyFromSomePlace
bars = Bar.all()
for bar in bar:
    if bar.parentFoo.key() == fooKey:
        // do stuff

但是最近我放弃了这个approch,因为bar.parentFoo.key()每次都会生成一个子查询来获取Foo.我现在使用的方法是将每个Foo键存储为Bar.parentFoo上的字符串,这样我就可以将它与someFooKeyFromSomePlace进行字符串比较,并消除所有子查询开销.

现在我开始关注实体组,并想知道这是否是更好的方法?我无法弄清楚如何使用它们.

至于上述两种方法,我想知道使用它们有什么缺点吗?可以使用存储的密钥字符串回来并在* * *中对我进行排序.最后但并非最不重要的是有更快的方法来做到这一点?

解决方法

小费:

更换…

bar.parentFoo.key() == fooKey

与…

Bar.parentFoo.get_value_for_datastore(bar) == fooKey

要避免额外的查找,只需从ReferenceProperty中获取密钥

见Property Class

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读