ndb.get_multi(keys)返回None数组

时间:2012-09-07 13:32:29

标签: python google-app-engine google-cloud-datastore

我想从Google Appengine ndb获取一些数据。 我有以下代码

keys = []
for field in self.request.arguments():
    keys.append(ndb.Key(models.MyModel, int(id)))

# Some unrelevant code

for k in keys:
    logging.info(k)

m = ndb.get_multi(keys)
for p in m:
    logging.info(p)

这给了我这个输出:

INFO     2012-09-07 13:18:23,436 main.py:58] Key('MyModel', 42)
INFO     2012-09-07 13:18:23,436 main.py:58] Key('MyModel', 44)
INFO     2012-09-07 13:18:23,437 main.py:58] Key('MyModel', 42)
INFO     2012-09-07 13:18:23,437 main.py:58] Key('MyModel', 43)
INFO     2012-09-07 13:18:23,437 main.py:58] Key('MyModel', 44)
INFO     2012-09-07 13:18:23,443 main.py:62] None
INFO     2012-09-07 13:18:23,443 main.py:62] None
INFO     2012-09-07 13:18:23,443 main.py:62] None
INFO     2012-09-07 13:18:23,443 main.py:62] None
INFO     2012-09-07 13:18:23,444 main.py:62] None

我确信数据存储区中存在具有该ID号的模型。那么我做错了什么?

1 个答案:

答案 0 :(得分:3)

id可以是数据存储区中的字符串。所以Key('MyModel','42')可能正是您所寻找的。 Id可以是字符串或整数。 Here是进一步阅读的文档。

修改 您的MyModel实体是否具有父键?如果是,那么在构造密钥时你需要包含父代。