Python でのエラー処理関数

データベースに接続しようとしたり、SQL ステートメントを発行しようとしたりすると、エラーが発生することがあります。 ユーザー名またはパスワードが正しくない、表または列の名前のつづりに誤りがある、SQL ステートメントが無効である、などの可能性があります。 ibm_db API は、エラー状態から正常に回復するのに役立つエラー処理関数を提供します。

接続エラー

接続試行が失敗した場合は、リストされた関数のいずれかを使用して診断情報を取得します。

表 1. 接続エラーを処理するための ibm_db 関数
関数 説明
ibm_db.conn_error 最後の接続試行で戻された SQLSTATE を取得します
ibm_db. conn_errormsg アプリケーション・エラー・ログに該当する記述エラー・メッセージを検索します。

SQL エラー

SQL ステートメントを準備または実行しようとして失敗した場合、あるいは結果セットから結果をフェッチしようとして失敗した場合には、リストされた関数のいずれかを使用して診断情報を取得します。

表 2. SQL エラーを処理するための ibm_db 関数
関数 説明
ibm_db.stmt_error SQL ステートメントを準備または実行する最後の試行、あるいは結果セットから結果をフェッチする最後の試行によって戻された SQLSTATE を取得します
ibm_db.stmt_errormsg アプリケーション・エラー・ログに該当する記述エラー・メッセージを検索します。

ibm_db API について詳しくは、http://code.google.com/p/ibm-db/wiki/APIsを参照してください。

例 1: 接続エラーの処理


import ibm_db 
try:
    conn = ibm_db.connect("database","username","password")     
except:     
    print "no connection:", ibm_db.conn_errormsg()
else:
    print "The connection was successful" 

例 2: SQL エラーの処理


import ibm_db
conn = ibm_db.connect("database","username","password")
sql = "DELETE FROM EMPLOYEE"
try:
   stmt = ibm_db.exec_immediate(conn, sql)
except:
   print "Transaction couldn't be completed:" , ibm_db.stmt_errormsg()
else:
   print "Transaction complete."