SQLite 5 分钟快速入门
为什么选 SQLite 来快速入门
SQLite 是一个文件数据库——所有数据存在一个 .db 文件里,不需要安装和启动数据库服务。对于 Prisma 初学者来说,这是最省心的选择:
- 零安装、零配置
- 数据库文件就在项目目录里,可以提交到 Git(小规模原型阶段)
- Prisma 对 SQLite 的支持已经很成熟(v7 完整支持;v8 仍在早期访问阶段)
5 分钟跑通
1. 创建项目
mkdir prisma-sqlite-demo
cd prisma-sqlite-demo
npm init -y
npm install typescript ts-node @types/node --save-dev
npm install @prisma/client
npm install prisma --save-dev
npx tsc --init
2. 初始化 Prisma(指定 SQLite)
npx prisma init --datasource-provider sqlite
这条命令会自动把 prisma/schema.prisma 里的 datasource provider 设为 sqlite,.env 里的 DATABASE_URL 会是 file:./dev.db——数据文件会存放在 prisma/dev.db。
3. 编写 Schema
打开 prisma/schema.prisma,替换成:
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model Task {
id Int @id @default(autoincrement())
title String
description String?
done Boolean @default(false)
createdAt DateTime @default(now())
}
4. 生成表结构 + Client
npx prisma migrate dev --name init
执行完,prisma/dev.db 文件出现了,里面已经有了 Task 表,Prisma Client 也自动重新生成了。
5. 写查询脚本
创建 main.ts:
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function main() {
// 创建任务
await prisma.task.create({
data: { title: '学习 Prisma', description: '写个 demo' },
})
await prisma.task.create({
data: { title: '提交代码' },
})
// 查询所有任务
const tasks = await prisma.task.findMany()
console.log(tasks)
}
main()
.catch(console.error)
.finally(() => prisma.$disconnect())
运行:
npx ts-node main.ts
输出两个刚创建的任务对象,数据库文件 prisma/dev.db 里已经有了真实数据。
6. 用 Studio 查看
npx prisma studio
浏览器自动打开 Studio(默认本地 5555 端口),你可以看到刚才创建的两条 Task 记录,能筛选、编辑、添加新记录。
常见坑
- SQLite 不支持某些高级类型:比如
Json、原生枚举、@db.VarChar(n)这些在 PostgreSQL/MySQL 上能用的功能,在 SQLite 上没有对应实现。Schema 设计时要注意 provider 差异 - SQLite 单写者限制:同一时刻只能一个写操作。如果你的应用有高并发写入需求,别用 SQLite 做生产数据库
- 迁移文件换数据库不能复用:从 SQLite 切到 PostgreSQL 后,之前生成的
migrations/目录里的 SQL 不适用,需要清掉重新跑migrate dev
什么时候 SQLite 够用
- 本地开发和原型验证
- 课程作业、个人小项目
- 运行在客户端的 Electron/Tauri 应用
- Cloudflare D1、Turso 这类边缘 SQLite 托管服务(生产可用,自带连接池和多副本)