Python異常処理問題の把握方法


Python異常処理という知識を十分に身につけるには、Python言語の構造、文、変数、関数、前処理命令、入力と出力などの内容を理解して把握することで、Python異常処理の問題を軽く解決することができます.
Python異常処理について説明します.必要なモジュールをインポートした後、animal.pyはconnect()呼び出しを使用してサーバへの接続を確立します.スクリプトは、障害の原因を表示するなど、接続障害を処理するために例外をキャプチャする必要があります.Python言語では、例外を処理するためにtry文にコードを配置し、エラー処理コードを含むexcept句を含む必要があります.生成された接続のコードは次のとおりです.

  
  
  
  
  1. try:  
  2.  
  3. conn = MySQLdb.connect (host = "localhost",  
  4.  
  5. user = "testuser",  
  6.  
  7. passwd = "testpass",  
  8.  
  9. db = "test")  
  10.  
  11. except MySQLdb.Error, e:  
  12.  
  13. print "Error %d: %s" % (e.args[0], e.args[1])  
  14.  
  15. sys.exit (1) 

Except句中の異常類MySQLdb.ErrorはMySQLdbが提供できる特定のデータベースエラー情報を取得するために用いられ,変数eはエラー情報を格納するために用いられる.異常が発生した場合、MySQLdbは関連情報をe.argsに格納します.これは、エラーコードとエラーを記述する文字列からなる二要素メタグループです.この例では、except句がこれらの値を印刷し、終了します.
データベースに関連する文は、類似のtry/except構造に格納してエラーを収集およびレポートできます.便宜上、後述の議論では例外処理コードは表示されません.次に、文を送信する方法について説明します.Animal.pyの次のコードは、カーソルオブジェクトを作成し、動物テーブルの設定と入力文を送信します.このコードには、エラーチェックが含まれていないことに注意してください.

  
  
  
  
  1. CREATE TABLE animal  
  2.  
  3. (  
  4.  
  5. name CHAR(40),  
  6.  
  7. category CHAR(40)  
  8.  
  9. ) PEAR DB 。 animal.py , #! UNIX :  
  10. #!/usr/bin/python  
  11.  
  12. # animal.py -   
  13.  
  14. import sys  
  15.  
  16. conn = MySQLdb.connect (host = "localhost",  
  17.  
  18. user = "testuser",  
  19.  
  20. passwd = "testpass",  
  21.  
  22. db = "test")  
  23.  
  24. except MySQLdb.Error, e:  
  25.  
  26. print "Error %d: %s" % (e.args[0], e.args[1])  
  27.  
  28. sys.exit (1)Except MySQLdb.Error MySQLdb , e 。
  29. ,MySQLdb e.args—— 。 ,except , 。  
  30. try/except ,
  31. , 。  
  32. 。Animal.py , 。 :  
  33. cursor = conn.cursor ()  
  34.  
  35. cursor.execute ("DROP TABLE IF EXISTS animal")  
  36.  
  37. cursor.execute ("""  
  38.  
  39. CREATE TABLE animal  
  40.  
  41. (  
  42.  
  43. name CHAR(40),  
  44.  
  45. category CHAR(40)  
  46.  
  47. )  
  48.  
  49. """)  
  50.  
  51. cursor.execute ("""  
  52.  
  53. INSERT INTO animal (name, category)  
  54.  
  55. VALUES  
  56.  
  57. ('snake', 'reptile'),  
  58.  
  59. ('frog', 'amphibian'),  
  60.  
  61. ('tuna', 'fish'),  
  62.  
  63. ('racoon', 'mammal')  
  64.  
  65. """)  
  66.  
  67. print "Number of rows inserted: %d" % cursor.rowcount 

Python例外処理はtry文を入れることができ、エラーが発生すると例外がトリガーされ、except句にキャプチャされて処理されることを覚えておいてください.しかし,コードの可読性を考慮すると,ここではコードのメイン部分のみを与えた.上の文は、◆動物表がすでに存在する場合は破棄する動作を完了します.◆動物表を作成します.◆テーブルにデータを挿入し、追加されたロー数をレポートします.
これらの文は、カーソルオブジェクトを呼び出すexecute()メソッドによって発行されます.最初の2つのexecute()文はデータを生成しませんが、3番目の文は挿入された行数を表す統計量を生成します.この統計値はカーソルのrowcountプロパティに格納されます.一部のデータベース・インタフェースでは、execution実行呼び出しの戻り値によってこの統計値が提供されますが、DB-APIではそうではありません.
この動物表はすでに作成されているので、選択命令を出して情報を検索することができます.前の文のように、SELECT文もexecute()メソッドを使用して発行します.ただし、DROPまたはINSERT文とは異なり、SELECT文は結果セットを生成します.つまり、execute()は文のみを発行しますが、結果セットは返されません.
fetchone()メソッドを使用して、1行のデータを返すたびに、またはfetchall()メソッドを使用して一度にすべてを完了することができます.アニマルでpyでは,この2つの方法が用いられている.次はfetchone()を使用して、1行ずつデータを取得する方法です.
zz http://developer.51cto.com/art/201002/184826.htm