"""数据库完整性错误的统一识别与翻译口径。 判断依据:pymysql 原生异常 ``orig.args`` 首位是 MySQL 错误码 —— 只有 1062(ER_DUP_ENTRY,唯一键冲突)是「已存在」语义,可安全转 400 业务 提示;其余完整性错误(外键 RESTRICT、数据截断等)原样上抛,由全局 异常处理器收敛 500(程序缺陷或数据异常,均不应伪装成用户错误)。 """ from sqlalchemy.exc import IntegrityError # MySQL 唯一键冲突错误码(pymysql 原生异常 args 首位) ERR_DUP_ENTRY = 1062 def is_duplicate_entry(exc: IntegrityError) -> bool: """判断 IntegrityError 是否为 MySQL 唯一键冲突(错误码 1062)。""" args = getattr(exc.orig, "args", ()) return bool(args) and args[0] == ERR_DUP_ENTRY