2011-09-21 46 views
1

有人可以解釋我最後一行return (rv[0] if rv else None) if one else rv?特別是one的作用。Python燒瓶 ​​- 簡單查詢功能

def query_db(query, args=(), one=False): 
    cur = g.db.execute(query, args) 
    rv = [dict((cur.description[idx][0], value) 
       for idx, value in enumerate(row)) for row in cur.fetchall()] 
    return (rv[0] if rv else None) if one else rv 

回答

2

one指示是否僅返回單個記錄。如果one爲真,則返回第一個(rv[0]),如果有要找到的記錄(if rv),則返回所有記錄。

+0

非常感謝大家。 – Max

+0

剛剛返回rv怎麼樣?返回的值可以被迭代。目前還不清楚爲什麼使用兩個條件。也許不需要。 – Alisa

+0

@Alisa:當然,但你必須問誰寫了代碼。 –

1

默認情況下,oneFalse,因此默認情況下會返回fetchall生成的字典列表。

如果傳遞Trueone,你只能查詢的第一行(變成dict),或None如果查詢不返回任何行。