- 修复二进制打包插件表缺失的问题
This commit is contained in:
parent
7d73cdef33
commit
0214beb679
@ -9,6 +9,7 @@ from app.core.security import get_password_hash
|
|||||||
from app.db import Engine, SessionFactory
|
from app.db import Engine, SessionFactory
|
||||||
from app.db.models import Base
|
from app.db.models import Base
|
||||||
from app.db.models.user import User
|
from app.db.models.user import User
|
||||||
|
from app.helper.module import ModuleHelper
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
|
|
||||||
|
|
||||||
@ -17,8 +18,8 @@ def init_db():
|
|||||||
初始化数据库
|
初始化数据库
|
||||||
"""
|
"""
|
||||||
# 导入模块,避免建表缺失
|
# 导入模块,避免建表缺失
|
||||||
for module in Path(__file__).with_name("models").glob("*.py"):
|
models_path = Path(__file__).with_name("models")
|
||||||
importlib.import_module(f"app.db.models.{module.stem}")
|
ModuleHelper.dynamic_import_all_modules(models_path, "app.db.models")
|
||||||
# 全量建表
|
# 全量建表
|
||||||
Base.metadata.create_all(bind=Engine)
|
Base.metadata.create_all(bind=Engine)
|
||||||
# 初始化超级管理员
|
# 初始化超级管理员
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import importlib
|
import importlib
|
||||||
import pkgutil
|
import pkgutil
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
class ModuleHelper:
|
class ModuleHelper:
|
||||||
@ -35,3 +36,26 @@ class ModuleHelper:
|
|||||||
print(f'加载模块 {package_name} 失败:{err}')
|
print(f'加载模块 {package_name} 失败:{err}')
|
||||||
|
|
||||||
return submodules
|
return submodules
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def dynamic_import_all_modules(base_path: Path, package_name: str):
|
||||||
|
"""
|
||||||
|
动态导入所有模块到全局对象
|
||||||
|
"""
|
||||||
|
modules = []
|
||||||
|
# 遍历文件夹,找到所有模块文件
|
||||||
|
for file in base_path.glob("*.py"):
|
||||||
|
file_name = file.stem
|
||||||
|
if file_name != "__init__":
|
||||||
|
modules.append(file_name)
|
||||||
|
# 保存已有的全局对象
|
||||||
|
existing_globals = set(globals().keys())
|
||||||
|
# 动态导入并添加到全局命名空间
|
||||||
|
for module in modules:
|
||||||
|
full_module_name = f"{package_name}.{module}"
|
||||||
|
import_module = importlib.import_module(full_module_name)
|
||||||
|
module_globals = import_module.__dict__
|
||||||
|
# 仅导入全局对象中不存在的部分
|
||||||
|
new_objects = {name: value for name, value in module_globals.items() if name not in existing_globals}
|
||||||
|
# 更新全局命名空间
|
||||||
|
globals().update(new_objects)
|
||||||
|
@ -1 +1 @@
|
|||||||
APP_VERSION = 'v1.4.8'
|
APP_VERSION = 'v1.4.8-1'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user