繁体   English   中英

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

[英]How to check if sql query result is empty in web.py/python

我正在 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 返回,无论它是否为空),没有计数 for 循环。 这对我来说不起作用,因为我不希望结果在返回之前被迭代。

这是我想用这个函数实现的一个例子:

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

有什么建议么?

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

试试这个:

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  

这是有关测试生成器是否具有任何项目的相关(重复?)问题,其中包含解决此限制的一些建议。 据我所知,Python 没有简单的方法来测试迭代器是否为空。

对于 MySQL Python:

data = self.cur.fetchall()

if len(data) == 0:
   self.statusbar.showMessage(" NoRecord her")
else:
   print("avaiable recored")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM