2015-04-18 46 views
4

NUM結果我有以下查詢:如何獲得在MySQLdb的

self.cursor.execute("SELECT platform_id_episode, title, from table WHERE asset_type='movie'") 

有沒有辦法得到的結果數直接返回?目前我在做低效:

r = self.cursor.fetchall() 
num_results = len(r) 

回答

3

如果你實際上並不需要的結果,*不問MySQL的他們。只需使用COUNT**

self.cursor.execute("SELECT COUNT(*) FROM table WHERE asset_type='movie'") 

現在,你會得到一個排,有一列,其值是行的其他查詢有回報的多少。

請注意,我忽略了您的特定列,只是做了COUNT(*)。 A COUNT(platform_id_episode)也是合法的,但它表示具有非NULL platform_id_episode值的發現行數; COUNT(*)是找到的行數句號。 ***


*如果您需要的結果......好吧,你必須調用fetchall()或等於拿到他們,所以我沒有看到這個問題。

**如果您以前從未在SQL中使用過聚合函數,請務必查看該頁面上的一些示例;你可能從來沒有意識到你可以簡單(有效地)做這樣的事情。

***如果有人教你「從來沒有在SELECT使用*」,好,這是很好的建議,但在這裏是不相關的。 SELECT *的問題在於,它會按結果集中的隨機順序來篩選所有列,而不是按您需要的順序實際需要的列。 SELECT COUNT(*)不這樣做。