数据存储应用程序引擎查询祖先python

2024-09-28 22:10:56 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我是数据存储和Python的新手,我有一个基本问题,但它可以帮助我了解更多的Google云。你知道吗

我有4个实体,假设我有一个父母(比赛)和孩子:团队,球员和事件。你知道吗

class Team(ndb.Model):
    d_name = ndb.StringProperty()
    d_side = ndb.StringProperty()

class Player(ndb.Model):
    d_name = ndb.StringProperty()
    date_of_birth = ndb.StringProperty()
    d_position = ndb.StringProperty()
    d_teamKey = ndb.StringProperty()


class Match(ndb.Model):
    d_competition_name = ndb.StringProperty()
    d_date = ndb.StringProperty()
    d_pool = ndb.StringProperty()
    d_season = ndb.StringProperty()
    d_team1Key = ndb.StringProperty()
    d_team2Key = ndb.StringProperty()
    d_winning_teamKey = ndb.StringProperty()
    d_match_id = ndb.StringProperty()
    d_match_day = ndb.IntegerProperty()

class Event(ndb.Expando):
    d_teamKey = ndb.StringProperty()
    d_playerKey = ndb.StringProperty()

我知道如果我想要第4天的所有比赛,我的问题是:

q = ndb.gql("SELECT * FROM Match WHERE d_match_day = 4")

但是我怎样才能搜到这些比赛的孩子们的所有球员,这样我就有了所有在第四天比赛的球员?你知道吗

谢谢你!你知道吗


Tags: 数据namedatemodelmatchgoogle孩子class
2条回答

Match添加另一个属性:A StructuredProperty,它是玩家(和/或团队)的列表:

Players = ndb.StructuredProperty(Player)
Teams =   ndb.StructuredProperty(Team)

然后,您可以查询4并拉取玩家和/或团队的列表。你知道吗

等等。。。。你把小时候的球员加到每场比赛中?这种设计似乎不够有效。一个孩子只能有一个父母(除非我严重误解了祖先的询问,这是可能的,公平的)。你知道吗

总之,在一个问题上,我认为这是行不通的。我将从match where d\u match\u day=4开始获取密钥,然后从那里执行“select*from Players where match\u key=”并使用刚刚创建的列表。(您可能需要更改match\u密钥以匹配实际的祖先密钥,但它的jist就在那里)

相关问题 更多 >