SQLite操作指南Skill sqlite-ops

本技能提供Python项目中SQLite数据库的实用操作模式,涵盖数据库连接、状态管理、缓存实现、异步操作、WAL模式优化、常见问题解决及CLI工具使用。适用于本地数据存储、应用缓存、事件日志和中小型数据管理场景。关键词:SQLite,Python数据库,本地数据库,WAL模式,数据库连接,数据缓存,异步操作,数据库迁移。

后端开发 0 次安装 0 次浏览 更新于 2/28/2026

name: sqlite-ops description: “Python项目中SQLite数据库的模式 - 状态管理、缓存和异步操作。触发词:sqlite, sqlite3, aiosqlite, 本地数据库, 数据库模式, 迁移, WAL模式。” compatibility: “需要Python 3.8+,并带有sqlite3(标准库)或用于异步的aiosqlite。” allowed-tools: “Read Write Bash”

SQLite 操作

Python项目中SQLite数据库的模式。

快速连接

import sqlite3

def get_connection(db_path: str) -> sqlite3.Connection:
    conn = sqlite3.connect(db_path, check_same_thread=False)
    conn.row_factory = sqlite3.Row  # 字典式访问
    conn.execute("PRAGMA journal_mode=WAL")  # 更好的并发性
    conn.execute("PRAGMA foreign_keys=ON")
    return conn

上下文管理器模式

from contextlib import contextmanager

@contextmanager
def db_transaction(conn: sqlite3.Connection):
    try:
        yield conn
        conn.commit()
    except Exception:
        conn.rollback()
        raise

WAL 模式

启用以支持并发读写:

conn.execute("PRAGMA journal_mode=WAL")
模式 读取 写入 最佳适用场景
DELETE (默认) 写入时阻塞 单线程 简单脚本
WAL 并发 单线程 Web应用,MCP服务器

常见问题

问题 解决方案
“数据库被锁定” 使用WAL模式
查询缓慢 添加索引,检查EXPLAIN QUERY PLAN
线程安全 使用 check_same_thread=False
外键未强制执行 运行 PRAGMA foreign_keys=ON

CLI 快速参考

sqlite3 mydb.sqlite    # 打开数据库
.tables                # 显示表
.schema items          # 显示模式
.headers on && .mode csv && .output data.csv  # 导出CSV
VACUUM;                # 回收空间

适用场景

  • 本地状态/配置存储
  • 缓存层
  • 事件日志
  • MCP服务器持久化
  • 中小型数据集

附加资源

有关详细模式,请加载:

  • ./references/schema-patterns.md - 状态、缓存、事件、队列表设计
  • ./references/async-patterns.md - aiosqlite CRUD、批处理、连接池
  • ./references/migration-patterns.md - 版本迁移、JSON处理