2012-01-01 112 views
0

我正在研究web.py框架中的web應用程序,並且需要web.py/python來檢查sql的結果查詢是空的。如何檢查是否在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 

有什麼建議?

回答

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

+0

謝謝!正是我在找什麼。那麼我怎麼知道某個函數返回的是什麼呢?在解釋器中,dbconn.query(「myquery」)和變量'result'都只打印,但沒有表明它是真或假。 – simen 2012-01-01 18:35:26

+0

這將無法正常工作,即使查詢沒有返回任何東西,它仍會繼續執行查詢中的if部分。因此,請在執行查詢之前進行檢查。回答如下 – ashishashen 2013-10-29 11:56:24

0

這裏的測試發電機是否有任何物品,其中包含幾個建議,以解決此限制是一個related (duplicate?) question。據我所知,Python沒有一種測試迭代器是否爲空的簡單方法。

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 
相關問題