メモ_Flaskでmysql.connectorとpymysqlだとエラーハンドリングが失敗する

Flaskアプリで、Mysqlと接続して情報を表示するという単純な処理で、DB接続のエラーハンドリングが失敗する。

mysql.connectorではなく、pymysqlライブラリを利用するようにしたら解消した。。。mysql.connectorとpymysqlを一緒に使うとダメなのかな。

mysql-connector-python=8.0.33
PyMySQL=1.1.0

失敗していた際のコード:

# app/utils/db_utils.py
import mysql.connector
from configparser import ConfigParser
import os
import pymysql

# ファイルの絶対パスを取得
file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'config.ini'))

# コンフィグファイルの読み込み
config = ConfigParser()
config.read(file_path)


def get_db_connection():
    return mysql.connector.connect(
~中略
    )

# エラーメッセージ
MYSQL_DOWN_ERROR_MESSAGE = "MySQL is currently unavailable."

def get_record_from_db(current_number):
    try:
        conn = get_db_connection()
        cursor = conn.cursor()
        cursor.execute(ここにはSQL文が入る)
        record = cursor.fetchone()
        cursor.close()
        conn.close()

        if record:
            return record[0]
        else:
            return None
    except pymysql.MySQLError:
        # MySQLがダウンしている場合はエラーメッセージを返す
        return MYSQL_DOWN_ERROR_MESSAGE
訂正したコード:

import pymysql.cursors
from configparser import ConfigParser
import os

# ファイルの絶対パスを取得
file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'config.ini'))

# コンフィグファイルの読み込み
config = ConfigParser()
config.read(file_path)

def get_db_connection():
    connection = pymysql.connect(
~中略
        cursorclass=pymysql.cursors.DictCursor  # DictCursorを使用して結果を辞書形式で取得
    )
    return connection

# エラーメッセージ
MYSQL_DOWN_ERROR_MESSAGE = "MySQL is currently unavailable."

def get_record_from_db(current_number):
    try:
        conn = get_db_connection()
        with conn.cursor() as cursor:
            cursor.execute(ここにはSQL文が入る)
            record = cursor.fetchone()

        if record:
            return record['explanation']
        else:
            return None
    except pymysql.MySQLError:
        # MySQLがダウンしている場合はエラーメッセージを返す
        return MYSQL_DOWN_ERROR_MESSAGE