mcpField
D
drizzle-sqlite

drizzle-sqlite

github.com/pproenca数据与数据库218200 次安装11 周前更新
代码仓库

关于 drizzle-sqlite

面向使用 SQLite 系后端的 Drizzle ORM 开发者,提供模式、迁移、查询和应用类型参考。45 条规则涵盖多个驱动及 SQLite 特有行为。

主要功能

  1. 01八类共 45 条规则
  2. 02模式与迁移指导
  3. 03查询与关系模式
  4. 04事务与批处理建议
  5. 05驱动配置与类型推断

适用场景

  1. 01设计 SQLite 模式与索引
  2. 02规划 Drizzle 迁移
  3. 03改进查询性能
  4. 04配置事务与驱动连接

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill drizzle-sqlite

安装后在 Claude Code 中输入/drizzle-sqlite确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
conn-enable-wal.md
conn-foreign-keys-pragma.md
conn-pick-driver-deliberately.md
conn-set-busy-timeout.md
conn-singleton-client.md
migrate-apply-with-migrator.md
migrate-commit-migrations-to-git.md
migrate-config-dialect-and-out.md
migrate-data-backfill-as-custom-sql.md
migrate-explicit-renames.md
migrate-generate-not-push-in-prod.md
perf-avoid-count-star-on-large-tables.md
perf-bulk-insert-multi-row-values.md
perf-covering-index-for-hot-queries.md
perf-keyset-not-offset-for-deep-pages.md
perf-prepare-hot-paths.md
query-always-limit-listings.md
query-avoid-n-plus-one-with-inarray.md
query-bind-parameters-not-concat.md
query-returning-instead-of-reselect.md
query-select-columns-not-star.md
query-toSQL-and-explain.md
query-upsert-with-onconflict.md
rel-declare-relations-for-rqb.md
rel-filter-with-where-inside-with.md
rel-leftjoin-for-flat-aggregates.md

详细介绍

dot-skills Drizzle SQLite 最佳实践

面向 Drizzle ORM 与 SQLite 系列后端的库参考技能。包含 8 个类别中的 45 条规则,按执行生命周期的影响排序:架构 → 迁移 → 查询 → 关系 → 事务 → 性能 → 连接 → 类型。

适用时机

在以下情况参考这些指南:

  • 定义 sqliteTable 架构——选择列类型、主键、索引和外键
  • 运行 drizzle-kit generate / migrate / push,或手动编辑迁移 SQL 文件
  • 使用 db.select()、db.insert()、db.update()、db.delete() 编写查询
  • 使用 db.query.* 和关系查询构建器获取嵌套数据
  • 使用 db.transaction() 或 db.batch()(libsql/Turso/D1)封装多语句写入
  • 使用 .prepare() + sql.placeholder() 或覆盖索引优化热路径查询
  • 设置 Drizzle 客户端(pragmas、驱动选择、单例生命周期)
  • 将数据库类型接入应用代码($inferSelect、drizzle-zod、JSON 结构)

此技能并非针对某个特定驱动——它涵盖 better-sqlite3、libsql、bun:sqlite、expo-sqlite、op-sqlite 和 Cloudflare D1 共通的行为,并在存在差异时指出特定驱动的区别。

架构背景

SQLite 在生产数据库中颇为特殊:

  • 没有客户端/服务端。“连接”就是打开一个文件。在本地文件场景中,没有连接池、身份验证或网络。
  • **只有一个写入者。**无论有多少连接,同一时间都只能有一个写入者。启用 WAL 后可以并行读取。
  • **没有原生布尔值或日期。**所有内容都是 INTEGER、REAL、TEXT、BLOB 或 NULL——其余类型由 Drizzle 列模式编码。
  • **ALTER TABLE 功能有限。**仅支持 RENAME COLUMN、ADD COLUMN、DROP COLUMN。更改类型和添加约束都需要重建表。
  • 默认关闭外键。PRAGMA foreign_keys = ON 按连接设置,且不会持久保存。

此技能中的许多规则之所以存在,是因为 Drizzle 的 API 对 PostgreSQL/MySQL/SQLite 做了统一抽象——但底层 SQLite 引擎有其限制,如果像使用 Postgres 一样对待它,这些限制会在运行时显现。

按优先级排列的规则类别

优先级类别影响前缀
1架构定义严重schema-
2迁移与 Drizzle Kit严重migrate-
3查询构建高query-
4关系高rel-
5事务与批处理中高tx-
6预处理语句与热路径中高perf-
7连接与驱动设置中conn-
8类型推断中types-

快速参考

1. 架构定义(严重)
2. 迁移与 Drizzle Kit(关键)
3. 查询构建(高优先级)
4. 关系(高优先级)
5. 事务与批处理(中高优先级)
6. 预编译语句与热点路径(中高)
7. 连接与驱动设置(中)
8. 类型推断(中)

使用方法

先阅读 references/_sections.md 中相关类别的概览,再阅读具体规则文件,了解详细说明和代码示例。每条规则都包含错误与正确示例——请在审查的代码中应用正确模式。

对于复杂更改(架构重新设计、迁移策略、性能优化),请先阅读受影响类别中的所有规则,再作决定。

参考文件

文件说明
references/_sections.md类别定义和顺序
assets/templates/_template.md新规则模板
metadata.json版本和参考信息

相关技能

  • effect-ts — 当应用基于 Effect 时使用;Drizzle 通过 Effect.tryPromise 集成。
  • nextjs-bundle-optimizer — 适用于将 SQLite 用作数据层的 Next.js 应用。
  • better-auth — 常与 Drizzle SQLite 搭配用于身份验证表;有关表生成,请参阅 better-auth-scaffold。

评论

支持 Markdown