#!/usr/bin/env python3 """ 检查所有模型的 __tablename__ 是否以 mjk_ 开头 用法: python scripts/check_table_prefix.py 退出码: 0 - 所有表名合规 1 - 有表名缺少 mjk_ 前缀 """ import re import sys from pathlib import Path MODELS_DIR = Path("app/models") TABLENAME_RE = re.compile(r'__tablename__\s*=\s*"([^"]+)"') def check() -> int: violations = [] for py_file in sorted(MODELS_DIR.glob("*.py")): content = py_file.read_text(encoding="utf-8") for match in TABLENAME_RE.finditer(content): table_name = match.group(1) if not table_name.startswith("mjk_"): violations.append((py_file.name, table_name)) if violations: print("❌ 表名前缀检查失败:以下模型的 __tablename__ 缺少 'mjk_' 前缀\n") for filename, table_name in violations: print(f" {filename}: __tablename__ = \"{table_name}\"") print( "\n修复方式:将表名改为 mjk_ 格式,与其他模型保持一致。\n" ) return 1 print("✅ 所有模型表名均以 'mjk_' 开头") return 0 if __name__ == "__main__": sys.exit(check())