我正在使用web.py框架中的Web应用程序,需要一种方法让web.py/python检查sql查询的结果是否为空。
这是我目前的职能:
def get_hours():
result = dbconn.query("select * from hours where date < (select max(date) from last_export) order by date DESC")
return result
这可以按预期工作,但如果查询结果为空,我希望函数返回False。我已经知道python无法返回可迭代对象中有多少元素(dbconn.query返回它,无论它是否为空),没有循环计数。对我来说不起作用,因为我不想在结果返回之前迭代结果。
以下是我希望通过该功能实现的示例:
def get_hours():
result = dbconn.query("select * from hours where date < (select max(date) from last_export) order by date DESC")
if <result is empty/no rows/nothing to iterate>:
return False
else:
return result
有什么建议吗?
答案 0 :(得分:2)
def get_hours():
result = dbconn.query("select * from hours where date < (select max(date) from last_export) order by date DESC")
if result:
return result
else:
return False
这是非常有趣的答案,以获取更多细节:
答案 1 :(得分:0)
这是关于测试生成器是否有任何项目的related (duplicate?) question,其中包含一些解决此限制的建议。据我所知,Python没有一种简单的方法来测试迭代器是否为空。
答案 2 :(得分:0)
试试这个:
def get_hours():
check = False
results = dbconn.query("select * from hours where date < (select max(date) from last_export) order by date DESC")
for result in results:
check = True
#Do stuff here
if check == False:
return false #query returned nothing
答案 3 :(得分:-1)
对于MySQL Python:
data = self.cur.fetchall()
if len(data) == 0:
self.statusbar.showMessage(" NoRecord her")
else:
print("avaiable recored")