如何在web.py/python中检查sql查询结果是否为空

时间:2012-01-01 18:17:41

标签: python mysql web.py

我正在使用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

有什么建议吗?

4 个答案:

答案 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

这是非常有趣的答案,以获取更多细节:

https://stackoverflow.com/a/2710949/492258

答案 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")