如何在sql执行期间处理行的不可用性

时间:2013-01-10 10:32:20

标签: python mysql-python

如果此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]

1 个答案:

答案 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,让调用函数很好地知道没有行。