sqlite-diff-log Vibe 项目

零依赖的 SQLite 数据库审计日志库,通过 SQLite 原生的 AFTER 触发器实现数据变更追踪

sqlite-diff-log 是一个零依赖的 SQLite 数据库审计日志库,通过 SQLite 原生的 AFTER 触发器实现数据变更追踪。所有逻辑都嵌入在数据库层而非应用代码中,因此任何向数据库写入数据的进程,无论是 Python、Node.js、Go 还是 sqlite3 命令行工具,都会自动被记录,真正实现了语言和进程无关的审计能力。该库的核心原理是使用 SQLite 的 AFTER 触发器和 json_object() 函数在事务内部生成 JSON 格式的数据变更快照。当你对一张表调用 attach_to_table() 后,库会在该表上创建三个 AFTER 触发器(分别对应 INSERT、UPDATE、DELETE),每次数据变更触发器都会自动将变更前后整行记录为 JSON 对象并写入 _audit_log 表。这个表是标准的数据表,可以像普通表一样被查询和复制,支持 Litestream、Turso 等任何基于 SQLite 的复制工具透明复制。安装简单,通过 pip install sqlite-diff-log 即可使用,API 设计也很直观:传入数据库连接并调用 attach_to_table() 附加目标表,之后所有变更都会自动记录,通过 get_logs() 方法可以查询任意时间范围内的数据变更历史,返回的结构化数据包含操作类型、旧数据、新数据、主键和时间戳。核心特性包括:零运行时依赖,完全基于 Python 标准库(sqlite3 和 json);语言和进程无关,因为触发器运行在数据库内核层而非应用层;防止 SQL 注入,所有表名、列名都经过 sqlite_master 校验,字面量经过转义;与 Litestream 和 Turso 等复制工具完美兼容;支持任意表(需单列主键)的审计。该库解决了现有工具的痛点:sqlite-utils 等工具需要额外运行命令行或在应用代码中手动计算差异,而 sqlite-diff-log 将差异计算委托给 SQLite 本身的内核,性能更优且无需额外的进程间通信。对于需要数据审计、变更追溯或实现数据同步的应用来说,这是一个轻量且可靠的解决方案。

团队信息

由 AI 猎手自动发现

评论与建议

0 条评论