From ac330eb0976e11ddda02c0d437f302c5db889d8b Mon Sep 17 00:00:00 2001 From: yumoqing Date: Tue, 11 Aug 2026 16:32:16 +0800 Subject: [PATCH] fix: initialize DBPools with databases in init() for get_sor_context --- app/pccs.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/pccs.py b/app/pccs.py index 0010f40..89721c8 100644 --- a/app/pccs.py +++ b/app/pccs.py @@ -8,21 +8,27 @@ from ahserver.webapp import webapp def init(): - # 注入全局默认 module_dbname — ServerEnv DictObject 每个实例不同, - # 必须通过 monkey-patching DictObject.__getattr__ 来让所有实例有默认值 - from ahserver.serverenv import ServerEnv + # Monkey-patch DictObject.__getattr__ — 所有 ServerEnv 实例默认返回 'pccs' from appPublic.dictObject import DictObject - _orig_getattr = DictObject.__getattr__ + _orig = DictObject.__getattr__ - def _patched_getattr(self, key): + def _patched(self, key): if key == 'get_module_dbname': return lambda m: 'pccs' if key == 'password_encode': return lambda s: s - return _orig_getattr(self, key) + return _orig(self, key) - DictObject.__getattr__ = _patched_getattr + DictObject.__getattr__ = _patched + + # 初始化全局 DBPools — sqlor 的 get_sor_context 创建新 DBPools() 时 + # 需要能拿到 databases。通过 sqlor.dbpools 模块级全局变量共享。 + from sqlor.dbpools import DBPools + from appPublic.jsonConfig import getConfig + + config = getConfig() + DBPools(config.databases) from appbase.init import load_appbase from rbac.init import load_rbac