diff --git a/scripts/m11b34_rbac_seed.py b/scripts/m11b34_rbac_seed.py index 7afcd4d..3a8fd93 100644 --- a/scripts/m11b34_rbac_seed.py +++ b/scripts/m11b34_rbac_seed.py @@ -15,15 +15,17 @@ references/endpoint-registration.md / sqlor-database-module): information_schema 读取,只写交集列;缺关键列直接 FAIL 而非静默跳过。 4. **幂等**:permission 按 path 查重(存在则 UPDATE 非键列),rolepermission 按 (roleid, permid) 查重;id 用 `md5` 派生的稳定 32 位串,重复执行零差异。 -5. **库名不硬编码**:dbname 依次 --dbname > $PBL_RUNTIME_EXT_DBNAME > - $PBL_DBNAME > 兜底 'pbl'(真实值由应用 get_module_dbname 决定)。 +5. **库名不硬编码**:dbname 依次取 --dbname > $PBL_RUNTIME_EXT_DBNAME > + 应用 conf/config.json 的 module_dbname 映射(真实值由应用 get_module_dbname + 决定)。**三级来源均缺 → 直接 FAIL 退出,不猜库名、无 'pbl' 兜底** + (与 resolve_dbname() 实现一致:解析不到即返回 (None, 'unresolved'))。 真实表结构(rbac,见 modules/scense/scripts/ddl.sql 实测 DDL): permission(id, name, description, ptype, parentid, path, title, icon) rolepermission(id, roleid, permid) 用法: - python3 scripts/m11b34_rbac_seed.py --check # 离线校验,不连库 + python3 scripts/m11b34_rbac_seed.py --check # 离线校验,不连库(rc=0 即 errors=0) python3 scripts/m11b34_rbac_seed.py --emit-sql x.sql # 出 SQL 交 build.sh 第 9 步 python3 scripts/m11b34_rbac_seed.py --apply # 连库幂等导入 """ @@ -359,8 +361,8 @@ def main(): stats = upsert(cur, 'permission', use_perm, [r for _, r in perm_rows], 'path', stats) stats = upsert(cur, 'rolepermission', use_rp, rp_rows, 'id', stats) conn.commit() - cur.execute("SELECT COUNT(1) FROM `permission` WHERE `path` LIKE ${p}$".replace( - '${p}$', '%s'), ('/%s/api/%%' % MODULE,)) + cur.execute("SELECT COUNT(1) FROM `permission` WHERE `path` LIKE %s", + ('/%s/api/%%' % MODULE,)) stats['verify_permission_in_db'] = cur.fetchone()[0] cur.execute("SELECT COUNT(1) FROM `rolepermission` rp JOIN `permission` p " "ON rp.permid = p.id WHERE p.path LIKE %s", ('/%s/api/%%' % MODULE,))