Google App Engine:get_by_id结果长度?

时间:2011-05-10 02:56:19

标签: python google-app-engine

如何返回get_by_id的长度?

例如我有

query = Model.get_by_id(1)

我试过

if len(query) == 1if query.count() == 1都无效

2 个答案:

答案 0 :(得分:4)

* Model.get_by_id()* 只返回一个对象,如果传递了一个id,只有在传递了id列表时才会返回一个对象列表,这意味着它显然是赢了有 len 和计数。

如果你想检查查询是否不是None,你可以简单地给出

query=Model.get_by_id(1)

if query is not None:

如果要根据键获取对象列表,请使用get:

query = MOdel.get(keys) #here keys is a list of keys

if len(query) == 1  will work now

答案 1 :(得分:1)

来自http://code.google.com/appengine/docs/python/datastore/modelclass.html#Model_get_by_id

  

如果ids是表示一个名称的字符串,则该方法返回该模型的实例   name,如果实体不存在,则为None。如果ids是一个列表,则该方法返回一个列表   模型实例,当没有相应Key的实体时,为None值。

所以使用类似的东西:

query = Model.get_by_id(1)
if query is None:
    print 'Not found'
else:
    print 'Returned one result'

表示多个ID:

query = Model.get_by_id([1, 2, 3])
count = 0
for item in query:
    if item is not None:
        print 'Found item ' + str(item)
        count += 1
print count

警告:未经测试