如何从Google App Engine Datastore中获取单个记录?
我在使用Google App Engine、GQL和Python的时候,数据存储里有一些东西,像这样:
class Thing(db.Model):
domain = db.StringProperty(required=True)
name = db.StringProperty()
...more...
在我的处理程序里,我有:
currentThing = db.GqlQuery("SELECT * FROM Thing WHERE domain=:1 LIMIT 1",
"example.com")
我知道这最多只会返回一个“Thing”,但是我找不到办法把这个“Thing”直接放到一个“Thing”对象里,而不需要通过循环,这让我觉得有点奇怪。
我也试过用 Thing.gql("WHERE domain=:1 LIMIT 1", "example.com")
这种写法,但没有成功。它们似乎都返回的是一堆集合。
我之前是做.NET的,现在刚接触Python和App Engine,所以我在找类似于 .FirstOrDefault() 这样的功能。
1 个回答
7
只需要在你的查询后面加上一个 .get()
就可以了。根据文档的说明:
这个操作会执行查询,然后返回第一个结果,如果没有结果就返回 None。
使用
get()
意味着你只想要一个结果,这会覆盖掉 GQL 查询中的 LIMIT 限制(如果有的话)。最多只会从数据存储中获取一个结果。
另外还有 .fetch(limit, offset=0)
,这个可以让你从查询中获取 limit 个结果。