# 显式导入所有模型模块,添加新的模型类所在模块(users模块)的导入 from mooc.models.admin import * # noqa from mooc.models.account import * # noqa from mooc.models.uni_account import * # noqa from mooc.models.core import * # noqa from mooc.models.userapi import * # noqa from mooc.models.users import * # noqa # 新增导入,确保能识别users.py里的模型类所在模块 # 导出常用的模型类 from mooc.models.account import ( Account, AccountWechats, AccountAliapp, AccountBaiduapp, AccountPhoneapp, AccountToutiaoapp, AccountWebapp, AccountWxapp, AccountXzapp ) from mooc.models.uni_account import ( UniAccount, UniAccountExtraModules, UniAccountGroup, UniAccountMenus, UniAccountModules, UniAccountModulesShortcut, UniAccountUsers, UniGroup, UniLinkUniacid, UniModules, UniSettings, UniVerifycode ) from mooc.models.core import ( ImsCoreCache, ImsCoreCron, ImsCoreCronRecord, ImsCoreJob, ImsCoreMenu, ImsCoreMenuShortcut, ImsCorePaylog, ImsCorePerformance, ImsCoreQueue, ImsCoreRefundlog, ImsCoreResource, ImsCoreSendsmsLog, ImsCoreSessions, ImsCoreSettings ) from mooc.models.userapi import ( ImsUserapiCache, ImsUserapiReply ) from mooc.models.users import ( ImsUsers, ImsUsersBind, ImsUsersCreateGroup, ImsUsersGroup, ImsUsersInvitation, ImsUsersLastUse, ImsUsersLoginLogs, ImsUsersOperateHistory, ImsUsersOperateStar, ImsUsersPermission, ImsUsersProfile, ImsUsersExtraGroup, ImsUsersExtraLimit, ImsUsersExtraModules, ImsUsersExtraTemplates, ImsUsersFailedLogin, ImsUsersFounderGroup, ImsUsersFounderOwnCreateGroups, ImsUsersFounderOwnUniGroups, ImsUsersFounderOwnUsers, ImsUsersFounderOwnUsersGroups ) def verify_all_models(): """验证所有模型是否已正确注册到Base.metadata""" from mooc.db.database import Base # 所有预期的表名,添加新模型对应的表名 expected_tables = { 'ims_goouc_fullexam_admin', # Account 相关表 'ims_account', 'ims_account_aliapp', 'ims_account_baiduapp', 'ims_account_phoneapp', 'ims_account_toutiaoapp', 'ims_account_webapp', 'ims_account_wechats', 'ims_account_wxapp', 'ims_account_xzapp', # UniAccount 相关表 'ims_uni_account', 'ims_uni_account_extra_modules', 'ims_uni_account_group', 'ims_uni_account_menus', 'ims_uni_account_modules', 'ims_uni_account_modules_shortcut', 'ims_uni_account_users', 'ims_uni_group', 'ims_uni_link_uniacid', 'ims_uni_modules', 'ims_uni_settings', 'ims_uni_verifycode', # ImsCore 相关表名 "ims_core_cache", "ims_core_cron", "ims_core_cron_record", "ims_core_job", "ims_core_menu", "ims_core_menu_shortcut", "ims_core_paylog", "ims_core_performance", "ims_core_queue", "ims_core_refundlog", "ims_core_resource", "ims_core_sendsms_log", "ims_core_sessions", "ims_core_settings", # ImsUserapi 相关表名 "ims_userapi_cache", "ims_userapi_reply", # ImsUsers 相关表名 "ims_users", "ims_users_bind", "ims_users_create_group", "ims_users_group", "ims_users_invitation", "ims_users_lastuse", "ims_users_login_logs", "ims_users_operate_history", "ims_users_operate_star", "ims_users_permission", "ims_users_profile", "ims_users_extra_group", "ims_users_extra_limit", "ims_users_extra_modules", "ims_users_extra_templates", "ims_users_failed_login", "ims_users_founder_group", "ims_users_founder_own_create_groups", "ims_users_founder_own_uni_groups", "ims_users_founder_own_users", "ims_users_founder_own_users_groups" } actual_tables = set(Base.metadata.tables.keys()) missing_tables = expected_tables - actual_tables extra_tables = actual_tables - expected_tables if missing_tables: raise RuntimeError(f"Missing tables in metadata: {missing_tables}") if extra_tables: print(f"Warning: Found unexpected tables: {extra_tables}") return True def get_all_table_names(): """获取所有已注册的表名""" from mooc.db.database import Base return sorted(Base.metadata.tables.keys())