NDB查询在本地环境和生产环境中提供不同的结果

时间:2013-07-25 13:23:24

标签: google-app-engine app-engine-ndb

我正在把头撞到墙上,希望你可以告诉我在睡眠不足/ noob状态下我忽略的一件非常简单的事情。

很简单,我正在进行查询,返回的对象类型在本地计算机上与在部署应用程序后返回的对象不同。

match = MatchRealTimeStatsModel.queryMatch(ancestor_key)[0]

在我的本地计算机上,上面生成了一个MatchRealTimeStatsModel对象。所以我可以毫无问题地运行以下内容:

logging.info(match)       # outputs a MatchRealTimeStatsModel object
logging.info(match.match) # outputs a dictionary from json data

当在Goggles机器上运行以上两行时,我得到以下结果:

logging.info(match)       # outputs a dictionary from json data
logging.info(match.match) # AttributeError: 'dict' object has no attribute 'match'

有关可能导致此问题的建议吗?我清理了数据存储,并做了我能想到的一切来清理GAE环境。

编辑#1:添加MatchRealTimeStatsModel代码:

class MatchRealTimeStatsModel(ndb.Model):
    match = ndb.JsonProperty()

    @classmethod
    def queryMatch(cls, ancestor_key):
        return cls.query(ancestor=ancestor_key).fetch()

这是实际的电话:

ancestor_key = ndb.Key('MatchRealTimeStatsModel', matchUniqueUrl)
match = MatchRealTimeStatsModel.queryMatch(ancestor_key)[0]

1 个答案:

答案 0 :(得分:2)

也许您在本地使用不同版本的代码而不是prod?尝试在两个位置重置源代码的副本。