
DBcm
モジュールの再検討
9
章で最後に
DBcm
が登場したのは、
MySQL
データベースにアクセスする際に
with
文を使った
ときでした。そのときは、エラー処理については(この問題を都合よく無視して)先送りにしました。
しかし、もう
sys.exc_info
の機能がわかっているので、
UseDatabase
の
__exit__
メソッ
ドへの引数の意味がよくわかるはずです。
import mysql.connector
class UseDatabase:
def __init__(self, config: dict) -> None:
self.configuration = config
def __enter__(self) -> 'cursor':
self.conn = mysql.connector.connect(**self.configuration)
self.cursor = self.conn.cursor()
return self.cursor
def __exit__(self, exc_type, exc_value, exc_trace) -> None:
self.conn.commit()
self.cursor.clos
e()
self.conn.close()
UseDatabase
は次の
3
つのメソッドを実装していました。
●
__init__
は
with
を実行する前に設定の機会を与える。
●
__enter__
は
with
文の開始時に実行され、
●
__exit__ ...