Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python db.Query.fetch(limit)返回所有结果,而不是limit_Python_Google App Engine - Fatal编程技术网

Python db.Query.fetch(limit)返回所有结果,而不是limit

Python db.Query.fetch(limit)返回所有结果,而不是limit,python,google-app-engine,Python,Google App Engine,我在python 2.7上使用appengine,并通过以下调用查询数据库实体: query = Model.all().filter("profile =", p_key) query.order('-created') query.run(limit=10) logging.debug('count is %i' % query.count()) #shows 35 instead of 10 我也尝试过使用query.fetch(10),但仍然返回所有结果,而不是limit。有什么想法吗

我在python 2.7上使用appengine,并通过以下调用查询数据库实体:

query = Model.all().filter("profile =", p_key)
query.order('-created')
query.run(limit=10)
logging.debug('count is %i' % query.count()) #shows 35 instead of 10
我也尝试过使用query.fetch(10),但仍然返回所有结果,而不是limit。有什么想法吗?

根据GAE-你试过了吗

query.fetch(limit = 10)

此外,您是否验证了过滤器是否正常工作(没有任何限制命令)-以下是有关您未更新
查询
变量的文档

这样做:

query = Model.all().filter("profile =", p_key)
query = query.order('-created')
query = query.run(limit=10)
现在,结果被分配给您的
查询
变量。

您正在查询,但没有将其分配给任何对象。

这很奇怪。all()和run()的使用表明这是在使用旧的db包,其中order()对查询有副作用,不需要赋值;此外,run()返回一个迭代器,它是一个与查询完全不同的对象。真正的问题是run(limit=N)不在查询中存储限制;您必须调用q.count(limit=N)才能将限制应用于count调用。也许你可以发布为你工作的实际代码?@GuidovanRossum如果
run()
返回一个迭代器,那么将该迭代器分配给变量有什么问题。好的,我同意将其命名为
query
并将迭代器/结果分配给该变量没有意义,但除此之外,它是问题的解决方案。还是我遗漏了什么?这只是您给它起的令人困惑的名字——因为最初的代码示例接着调用query.count(),如果query是一个迭代器,它肯定会失败。