Google App Engine(Python):查询返回结果的最佳判断方法

0 投票
4 回答
1276 浏览
提问于 2025-04-17 05:11

我在使用GAE的网页应用框架,想要显示查询的结果。我先对查询对象调用get()方法,然后如果get()返回了结果,就对结果进行遍历,比如这样:

query = Employee.all().filter("some_boolean_property = ", True)
if query.get():
    for employee in query:
        # output employee.name etc.
        # ...
else:
    # output "no records found" message
    # ...

我之所以使用get()而不是在for循环中直接用else,是因为我想把数据输出到一个表格里。如果没有结果,我就不想写表格的代码。之前我用的是fetch(1),但我觉得这两者是一样的(也就是说,get()只是执行查询,但最多只返回一个结果)。所以我想问的是,这样使用get()是否正确?这样查找查询是否有结果的方式是否是最好的?用count(1)会不会更好?

我并不关心结果的数量,只想知道有没有结果。

4 个回答

0

你可以使用 Query 类里的 count 方法。如果你给它设置一个 limit,它就只会检查这么多条记录。下面是一个例子:

query = Employee.all().filter("some_boolean_property = ", True)
if query.count(limit=1):
   for employee in query:
       pass
1

只需要调用 fetch 来获取你需要的结果数量,然后逐个处理这些结果。比如:

query = Employee.all().filter("some_boolean_property = ", True)
results = query.fetch(20)
if results:
    for employee in results:
        # Do stuff
0

另一种方法是在循环里设置一个标记,表示至少找到了一个记录,然后在检查“没有找到记录”的情况下测试这个标记。

found = False
query = Employee.all().filter("some_boolean_property = ", True)
for employee in query:
    found = True
    # output employee.name etc.
    # ...
if not found:
    # output "no records found" message
    # ...

这样做的好处是可以省去一次对数据存储的调用。

撰写回答