用途:db 库是 Yaklang 的数据库核心模块,面向需要在脚本/插件里持久化或查询数据的场景,提供 SQLite/MySQL 连接、SQL 查询、键值存储与 Payload 字典管理等能力。
主要能力与用法: 一、临时 SQLite。用 tempDB = db.OpenTempSqliteDatabase()~ 获取 (gormDB, err),适合在脚本中临时落地扫描结果、资产或中间表。写操作通过 tempDB.Exec(sql, args...) 执行,其 .Error 是字段而非函数,需写成 err = tempDB.Exec(...).Error 再断言。查询用 rows = db.ScanResult(tempDB, sql, args...)~,返回 []map,每行是一个 map。SQL 中可用 ? 参数化以防注入。 二、键值存储。db.SetKey 写入或覆盖,db.GetKey 读取(不存在返回空串而非 nil),db.SetKeyWithTTL 支持秒级过期,db.DelKey 删除。数据写入 Yakit profile 数据库,可跨脚本共享配置与中间状态。项目级配置用 db.SetProjectKey / db.GetProjectKey,随项目切换,与全局 KV 区分。 三、Payload 字典。db.SavePayload 存入字典组,db.YieldPayload 为迭代器、逐条产出内容字符串(不是对象,不能取 .Content),db.GetAllPayloadGroupsName 列出所有组名,db.DeletePayloadByGroup 删除整组。
API 形态约定:OpenTempSqliteDatabase 返回 (db, err),用 ~ 处理;.Exec(...).Error 是字段不是函数;GetKey 不存在返回空串;KV 与 Payload 为持久化写入,自测应使用唯一前缀 key/group 并在结尾清理。不确定方法时可用 desc(db)、desc(tempDB) 在脚本内查看。
适用场景:脚本内结构化数据的临时存储与统计、插件间共享配置与状态、爆破字典的统一管理与迭代。
限制:资料未说明支持的数据库版本、性能上限、并发行为或权限要求,相关细节暂未提供。