2013-01-10 38 views
0

如果沒有這個id的行,你應該如何處理異常。應該如何調用代碼處理這個如何在sql執行期間處理不可用的行

def function(id) 
    mysql_conn = MySQLdb.connect(..)  
    cursor = mysql_conn.cursor() 
    cursor.execute("""select val from fooo where id = %s""", (id)) 
    row = cursor.fetchone() 
    return row[0] 

回答

1

每當我發現自己只取一排,我總是喜歡用下面的(雖然不是最好的性能明智)構造。

cursor.execute("SELECT * FROM foo;") 
for row in cursor: 
    return row 
# No row handling behind the loop. 
return "No rows found" 

當循環的第一次迭代運行時,這會有效地返回。這隻有在結果集中至少有1行時纔會發生。否則將運行後面的環路for

您可以引發自定義異常,或者返回一個特殊值,如None,讓調用函數很好地知道沒有行。

+0

我實際上需要返回一個整數值,所以我不想字符串值。 – Joe

+0

@Joe,當然你可以返回任何你想要的東西而不是字符串。這是一個'return 0'或'return -1'的例子。 – Wessie

相關問題