企业级FastAPI后端模板搭建(五)初始化数据

发布时间:2026/7/5 15:13:25

企业级FastAPI后端模板搭建(五)初始化数据 搭建文件结构创建core/insert_data.py文件代码如下fromlogimportloggerasyncdefinit_dept():logger.info( 开始新增部门...)asyncdefinit_superuser():logger.info( 开始初始化超级管理员用户...)asyncdefinit_menus():logger.info( 开始初始化系统菜单...)asyncdefinit_apis():logger.info( 开始初始化API数据...)asyncdefinit_roles():logger.info( 开始初始化用户角色...)asyncdefinit_insert_data():awaitinit_dept()awaitinit_superuser()awaitinit_menus()awaitinit_apis()awaitinit_roles()修改core/init_app.py文件from.insert_dataimportinit_insert_data ···asyncdefinit_data():logger.info( 系统初始化开始...)logger.info( 开始数据库初始化和迁移...)awaitinit_db()logger.info(✅ 数据库初始化完成)awaitinit_insert_data()logger.info( 系统初始化完成)初始化部门数据frommodels.adminimportDept...asyncdefinit_dept():logger.info( 开始新增部门...)deptsawaitDept.exists()ifnotdepts:awaitDept.create(name研发部门,codeYFBM,parent_id0,tree_path0,sort1,)logger.info(✅ 部门创建成功 - 部门: 研发部门)else:logger.info(ℹ️ 部门已存在跳过创建)运行之后数据库会添加对应数据初始化超级管理员用户frommodels.adminimportDept,User...asyncdefinit_superuser():logger.info( 开始初始化超级管理员用户...)userawaitUser.exists()ifnotuser:awaitUser.create(accountadmin,username超级管理员,emailadminadmin.com,passwordabcd1234,dept_id1,is_activeTrue,is_superuserTrue,)logger.info(✅ 超级管理员用户创建成功 - 用户名: admin)else:logger.info(ℹ️ 超级管理员用户已存在跳过创建)运行之后数据库会添加对应数据初始化系统菜单frommodels.adminimportDept,User,Menufromschemas.menusimportMenuType...asyncdefinit_menus():logger.info( 开始初始化系统菜单...)menusawaitMenu.exists()ifnotmenus:parent_menuawaitMenu.create(typeMenuType.CATALOG,title系统管理,path/system,sort1,parent_id0,visibleTrue,componentLayout,keep_aliveFalse,redirect/system/user,)children_menu[Menu(typeMenuType.MENU,title用户管理,pathuser,sort1,parent_idparent_menu.id,visibleTrue,componentsystem/user/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title角色管理,pathrole,sort2,parent_idparent_menu.id,visibleTrue,componentsystem/role/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title菜单管理,pathmenu,sort3,parent_idparent_menu.id,visibleTrue,componentsystem/menu/index,keep_aliveFalse,),Menu(typeMenuType.MENU,titleAPI管理,pathapi,sort4,parent_idparent_menu.id,visibleTrue,componentsystem/api/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title部门管理,pathdept,sort5,parent_idparent_menu.id,visibleTrue,componentsystem/dept/index,keep_aliveFalse,),Menu(typeMenuType.MENU,title操作日志,pathlog,sort6,parent_idparent_menu.id,visibleTrue,componentsystem/log/index,keep_aliveFalse,),]awaitMenu.bulk_create(children_menu)logger.info(✅ 系统菜单初始化成功 - 菜单数量: 7)else:logger.info(ℹ️ 系统菜单已存在跳过初始化)运行之后数据库会添加对应数据初始化APIfrommodels.adminimportDept,User,Menu,Apifromfastapi.routingimportAPIRoute...asyncdefinit_apis():logger.info( 开始初始化API数据...)apisawaitApi.exists()ifnotapis:frommainimportapp routesapp.routesforrouteinroutes:ifisinstance(route,APIRoute):methodlist(route.methods)[0]pathroute.path_format summaryroute.summary tagslist(route.tags)[0]awaitApi.create(**dict(methodmethod,pathpath,summarysummary,tagstags,))else:api_countawaitApi.all().count()logger.info(fℹ️ API数据已存在跳过初始化 - 当前API数量:{api_count})运行之后数据库会添加对应数据初始化用户角色frommodels.adminimportDept,User,Menu,Api,Rolefromtortoise.expressionsimportQ...asyncdefinit_roles():logger.info( 开始初始化用户角色...)rolesawaitRole.exists()ifnotroles:admin_roleawaitRole.create(name系统管理员,codeADMIN,sort1,desc系统管理员,)user_roleawaitRole.create(name普通用户,codeGUEST,sort2,desc普通用户,)# 分配所有API给管理员角色all_apisawaitApi.all()awaitadmin_role.apis.add(*all_apis)# 分配所有菜单给管理员和普通用户all_menusawaitMenu.all()awaitadmin_role.menus.add(*all_menus)awaituser_role.menus.add(*all_menus)# 为普通用户分配基本APIbasic_apisawaitApi.filter(Q(method__in[GET])|Q(tags基础模块))awaituser_role.apis.add(*basic_apis)logger.info(✅ 用户角色初始化成功 - 角色: 管理员, 普通用户)else:role_countawaitRole.all().count()logger.info(fℹ️ 用户角色已存在跳过初始化 - 当前角色数量:{role_count})运行之后数据库会添加对应数据sys_role表sys_role_api表sys_role_menu表

相关新闻