0

当此 id 没有行时,您应该如何处理异常。调用代码应该如何处理这个

  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]
4

1 回答 1

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让调用函数清楚地知道没有行。

于 2013-01-10T10:43:03.307 回答