from app import app from extensions import db from sqlalchemy import text def migrate(): with app.app_context(): print("🔧 正在平滑迁移至 RBAC 体系...") try: # 1. 创建新表 db.create_all() # 2. 修改 users 表结构 # 增加 role_id db.session.execute(text('ALTER TABLE users ADD COLUMN IF NOT EXISTS role_id INTEGER REFERENCES roles(id)')) # 3. 尝试迁移旧数据:如果旧的 role 字段存在且值为 'admin',则关联超级管理员角色 # 我们先执行初始化脚本创建角色 from init_rbac import init_rbac init_rbac() db.session.commit() print("✅ 数据库结构迁移成功") except Exception as e: print(f"❌ 迁移失败: {e}") db.session.rollback() if __name__ == '__main__': migrate()