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

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 に答える