
さらなるデータベース問題
「
DBcm
」では他にどのような問題が発生するの?
たとえデータベースが稼働していても、問題が発生する可能性があります。
例えば、データベースにアクセスする際に使う認証情報が正しくない場合も
__enter__
メソッ
ドは失敗し、
mysql.connector.errors.ProgrammingError
となります。
あるいは、
UseDatabase
コンテキストマネージャに関連するコードブロックが正しく実行され
る保証はないので、例外が投げられることがあります。データベースクエリ(実行している
SQL
)にエ
ラーがある場合も
mysql.connector.errors.ProgrammingError
を投げます。
SQL
クエリに関するエラーメッセージと、認証情報に関するエラーメッセージは異なりますが、同
じ例外
mysql.connector.errors.ProgrammingError
が起こります。認証情報のエラー
とは異なり、
SQL
のエラーは
with
文の実行中に発生します。つまり、複数の場所でこの例外を対応
する必要があります。問題は、どこで対応すべきかです。
import mysql.connector
class ConnectionError(Exception):
pass
class UseDatabase:
def __init__(self, config: dict):
self.configuration = config
def __enter__(self) ...