Google App Engine(Python):查询返回结果的最佳判断方法
我在使用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
# ...
这样做的好处是可以省去一次对数据存储的调用。