from fastapi import HTTPException import mysql.connector from mysql.connector import Error from app.core.config import DATABASE_CONFIG from contextlib import contextmanager @contextmanager def get_db_connection(): connection = None try: connection = mysql.connector.connect(**DATABASE_CONFIG) except Error as e: print(f"数据库连接错误: {e}") raise HTTPException(status_code=500, detail="数据库连接失败") try: yield connection finally: if connection and connection.is_connected(): try: if connection.unread_result: connection.consume_results() connection.close() except Exception as e: print(f"关闭数据库连接时出错: {e}")