Lite Sqlite

Polar Sponsor
爱发电 赞助
.NET 9.0

{"answer":"OpenClaw智能体专用快速轻量级本地SQLite数据库,内存与存储占用极低。用于创建或管理存储...的SQLite数据库。"}

lite SQLite - 轻量级本地数据库.

功能概述

lite SQLite - 轻量级本地数据库.是一项面向实际任务的技能,主要用于Ultra-轻量级 SQLite 数据库管理优化了 OpenClaw 代理服务器, 最小RAM (~2-5MB) 和存储高端. 为什么 SQLite?;QQLite 零设置 - 否。

核心要点

  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;

结果检查与注意事项

涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Lite SQLite — 轻量级本地数据库

专为 OpenClaw 智能体优化的超轻量级 SQLite 数据库管理方案,内存占用极低(约 2–5 MB),存储开销极小。

为何选择 SQLite?

✅ 零配置 — 无需服务端、无需配置,纯文件驱动 ✅ 内存占用极小 — 典型使用场景下仅需 2–5 MB RAM ✅ 性能卓越 — 每秒可执行数百万次查询 ✅ 高度便携 — 单一 .db 文件即可完整承载全部数据 ✅ 高可靠性 — 支持 ACID 事务,具备崩溃防护能力 ✅ 跨平台兼容 — 凡 Python 可运行之处,SQLite 均可运行

核心特性

  • 内存模式(:memory:)支持临时数据操作(性能更优!)
  • WAL(Write-Ahead Logging)模式支持高并发访问
  • 连接池(Connection Pooling)
  • 自动化的 Schema 迁移
  • 内置备份与恢复功能
  • 查询优化提示(Query Optimization Hints)

快速入门

基础数据库操作

from sqlite_connector import SQLiteDB

# 创建数据库(默认启用 WAL 模式)
db = SQLiteDB("agent_data.db")

# 创建表
db.create_table("memos", {
    "id": "INTEGER PRIMARY KEY AUTOINCREMENT",
    "title": "TEXT NOT NULL",
    "content": "TEXT",
    "created_at": "TEXT DEFAULT CURRENT_TIMESTAMP",
    "tags": "TEXT"
})

# 插入数据
db.insert("memos", [title="First memo", content="Hello world", tags="test"])

# 查询数据
results = db.query("SELECT * FROM memos WHERE tags = ?", ("test",))

# 更新数据
db.update("memos", "id = ?", [content="Updated content"], (1,))

# 删除数据
db.delete("memos", "id = ?", (1,))

# 关闭连接
db.close()

内存数据库(最快模式)

# 最快模式:纯内存运行,无磁盘 I/O
db = SQLiteDB(":memory:")

# 适用于临时性操作
db.create_table("temp", {...})

# 数据仅在当前会话生命周期内存在  
# 推荐用于缓存、中间计算或临时存储

性能优化

关键配置项

import sqlite3

# 启用 WAL 模式(Write-Ahead Logging)— 性能提升 3–4 倍
conn = sqlite3.connect("agent_data.db")
conn.execute("PRAGMA journal_mode=WAL")

# 关闭同步写入(加快写入速度;配合正确关闭流程仍可保证崩溃安全)
conn.execute("PRAGMA synchronous=NORMAL")

# 内存优化
conn.execute("PRAGMA cache_size=-64000")  # 设置 64 MB 缓存
conn.execute("PRAGMA page_size=4096")

# 将临时存储置于内存中
conn.execute("PRAGMA temp_store=MEMORY")

查询优化技巧

# 对高频查询字段建立索引
db.create_index("memos", "tags")
db.create_index("memos", "created_at")

# 使用预编译语句(本封装已自动支持)
db.query("SELECT * FROM memos WHERE id = ?", (id,))

# 批量插入处理大规模数据集
db.batch_insert("memos", rows_data)

预定义 Schema

智能体备忘录 Schema(记忆存储)

db.create_table("agent_memos", {
    "id": "INTEGER PRIMARY KEY AUTOINCREMENT",
    "agent_id": "TEXT NOT NULL",           # 创建该记录的智能体 ID
    "key": "TEXT NOT NULL",               # 查找键(Lookup key)
    "value": "TEXT",                      # 存储值
    "priority": "INTEGER DEFAULT 0",       # 检索排序优先级
    "created_at": "TEXT DEFAULT CURRENT_TIMESTAMP",
    "expires_at": "TEXT"                  # 可选 TTL(过期时间)
})

# 创建索引
db.create_index("agent_memos", "agent_id")
db.create_index("agent_memos", "key")
db.create_index("agent_memos", "expires_at")

会话日志 Schema

db.create_table("session_logs", {
    "id": "INTEGER PRIMARY KEY AUTOINCREMENT",
    "session_id": "TEXT NOT NULL",
    "agent": "TEXT NOT NULL",
    "message": "TEXT",
    "metadata": "TEXT",                   # JSON 格式字符串
    "created_at": "TEXT DEFAULT CURRENT_TIMESTAMP"
})

db.create_index("session_logs", "session_id")
db.create_index("session_logs", "created_at")

缓存 Schema(基于 TTL)

db.create_table("cache", {
    "id": "INTEGER PRIMARY KEY AUTOINCREMENT",
    "key": "TEXT UNIQUE NOT NULL",
    "value": "BLOB",                      # 支持二进制数据
    "created_at": "TEXT DEFAULT CURRENT_TIMESTAMP",
    "expires_at": "TEXT NOT NULL"
})

# 自动清理已过期条目
db.query("DELETE FROM cache WHERE expires_at < ?", (datetime.now().isoformat(),))

db.create_index("cache", "key")
db.create_index("cache", "expires_at")

高级特性

连接池(Connection Pooling)

from sqlite_connector import ConnectionPool

# 创建连接池以支持并发访问
pool = ConnectionPool("agent_data.db", max_connections=5)

# 获取连接
conn = pool.get_connection()
# 使用 conn...
pool.release_connection(conn)

自动备份

# 手动备份数据库
db.backup("agent_data_backup.db")

# 启用每日自动备份
db.auto_backup("backups/", "daily")

Schema 迁移

# 若列不存在则添加新列
db.add_column("memos", "updated_at", "TEXT DEFAULT CURRENT_TIMESTAMP")

# 迁移现有数据(重命名字段等)
db.migrate("memos", {
    "old_column": "new_column"
})

性能基准测试

典型性能表现

操作类型 行数 内存模式耗时 磁盘模式耗时
插入(Insert) 10,000 0.05 秒 0.3 秒
查询(索引命中) 10,000 0.001 秒 0.01 秒
查询(全表扫描) 10,000 0.05 秒 0.5 秒
更新(Update) 1,000 0.01 秒 0.1 秒
删除(Delete) 1,000 0.01 秒 0.1 秒

内存占用

  • 基础内存占用:2–5 MB
  • 10 万行数据:约 10–15 MB
  • 100 万行数据:约 50–100 MB
  • 内存模式(:memory:):约为数据实际大小 + 系统开销

OpenClaw 智能体最佳实践

1. 正确选择运行模式

# 临时操作请使用 :memory:
temp_db = SQLiteDB(":memory:")

# 持久化存储请使用文件数据库
persist_db = SQLiteDB("agent_storage.db")

2. 合理创建索引

# WHERE 子句中涉及的字段务必建索引
db.create_index("table", "column_name")

# 复合查询可建立多列联合索引
db.create_index("table", "col1, col2")

3. 批量操作替代逐条操作

# ❌ 避免逐条插入(性能差):
for row in rows:
    db.insert("table", row)  # 慢!

# ✅ 推荐批量插入(高性能):
db.batch_insert("table", rows)  # 快!

4. 利用 TTL 实现数据自动过期

# 自动清理过期缓存
db.cleanup_expired("cache", "expires_at")
# 自动清理 7 天前的日志
db.cleanup_old("logs", "created_at", days=7)

5. 定期执行 VACUUM 优化空间

# 在大量 DELETE 后回收磁盘空间
db.vacuum()  # 建议在系统空闲时段执行

DuckDB 替代方案(面向分析场景)

如需执行复杂分析类查询(聚合、大表关联等),建议选用 DuckDB:

import duckdb

conn = duckdb.connect(":memory:")

# 在复杂分析任务上显著优于 SQLite
conn.execute("""
    SELECT COUNT(*) as rows,
           AVG(value) as avg_value
    FROM large_table
""").fetchall()

何时选用 DuckDB:

  • 超大规模数据集分析(>1 亿行)
  • 复杂聚合与多表 JOIN
  • 列式数据处理操作
  • 统计分析与机器学习预处理

何时选用 SQLite:

  • 事务型操作(增删改查)
  • 中小规模数据集(<1 亿行)
  • 点查(Point Query)与单行更新
  • 通用目的持久化存储

常见使用模式

1. 备忘录存储

def save_memo(db, agent_id, key, value, ttl_hours=24):
    expires_at = (datetime.now() + timedelta(hours=ttl_hours)).isoformat()
    db.insert("agent_memos", {
        "agent_id": agent_id,
        "key": key,
        "value": json.dumps(value),
        "expires_at": expires_at
    })

2. 会话持久化

def save_session(db, session_id, agent, message, metadata=None):
    db.insert("session_logs", {
        "session_id": session_id,
        "agent": agent,
        "message": message,
        "metadata": json.dumps(metadata) if metadata else None
    })

3. 缓存层封装

def cache_get(db, key):
    if expired_key := db.query_one(
        "SELECT value FROM cache WHERE key = ? AND expires_at > ?",
        (key, datetime.now().isoformat())
    ):
        return json.loads(expired_key)
    return None

def cache_set(db, key, value, ttl_seconds=3600):
    expires_at = (datetime.now() + timedelta(seconds=ttl_seconds)).isoformat()
    db.insert_or_replace("cache", {
        "key": key,
        "value": json.dumps(value),
        "expires_at": expires_at
    })

错误处理

try:
    db.insert("metrics", {...})
except sqlite3.IntegrityError:
    # 主键/唯一约束冲突
    pass
except sqlite3.OperationalError:
    # 表不存在 或 数据库被锁
    pass

体积优化建议

减小存储体积

  1. 选用合适的数据类型:

    • 数值型字段优先使用 INTEGER 而非 TEXT
    • 浮点型字段优先使用 REAL 而非 TEXT
    • 使用 CHECK 约束进行数据校验
  2. 合理归一化数据结构:

    • JSON 字符串统一存为 TEXT
    • 变长字符串使用 TEXT
    • 避免冗余字段重复存储
  3. 定期执行 VACUUM:

    db.vacuum()  # 删除操作后释放磁盘空间
    
  4. 启用 WAL 模式替代传统日志(journal):

    conn.execute("PRAGMA journal_mode=WAL")
    

从其他存储迁移

从 JSON 文件迁移

# 将 JSON 加载至 SQLite
import json

with open("data.json") as f:
    data = json.load(f)

db.create_table("json_data", {key: "TEXT" for key in data[0].keys()})
db.batch_insert("json_data", data)

从 CSV 文件迁移

import pandas as pd

df = pd.read_csv("data.csv")
df.to_sql("csv_data", conn, if_exists="replace", index=False)

故障排查

数据库被锁(Database Locked)

# 启用 WAL 模式提升并发能力
conn.execute("PRAGMA journal_mode=WAL")

# 或使用连接池缓解竞争
pool = ConnectionPool("db.db", timeout=5.0)

查询缓慢

# 查看查询执行计划
plan = conn.execute("EXPLAIN QUERY PLAN SELECT * FROM ...").fetchall()

# 添加缺失索引
db.create_index("table", "column")

# 更新统计信息以辅助查询优化器
conn.execute("ANALYZE")

数据库文件过大

# 查看数据库物理尺寸
size_info = conn.execute("PRAGMA page_count, page_size").fetchone()
print(f"Size: {(page_count * page_size) / (1024*1024):.2f} MB")

# 执行 VACUUM 回收已删除数据占用的空间
db.vacuum()

命令行工具(CLI)

配套的 sqlite_cli.py 提供便捷的命令行接口:

# 创建数据库
python scripts/sqlite_cli.py create agent_data.db

# 创建表
python scripts/sqlite_cli.py create-table agent_memos -c id:INTEGER:P -c title:TEXT -c content:TEXT

# 插入数据
python scripts/sqlite_cli.py insert agent_memos '{"title": "Test", "content": "Hello"}'

# 查询数据
python scripts/sqlite_cli.py query "SELECT * FROM agent_memos"

# 优化数据库(VACUUM + ANALYZE)
python scripts/sqlite_cli.py optimize agent_data.db

参考资料

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习