prisma
简介
Prisma 是一个现代化的数据库工具包(Database Toolkit),通常被归类为 ORM(对象关系映射)工具,主要用于 Node.js 和 TypeScript 环境。
它的核心目标是让开发者以更直观、更安全、更高效的方式与数据库交互,取代传统的 SQL 编写或旧式的 ORM(如 Sequelize、TypeORM)。
1. 核心组件
Prisma 由三个主要部分组成:
- Prisma Client: 一个自动生成的、类型安全的查询构建器。你在代码中调用它来读写数据库(例如 prisma.user.findMany())。
- Prisma Schema (schema.prisma): 这是 Prisma 的核心。你需要在这个文件中使用声明式的语法定义数据模型、字段关系和数据库连接配置。它是“单一事实来源”。
- Prisma Migrate: 一个数据库迁移系统。它根据你的 Schema 文件变化,自动生成 SQL 迁移脚本并应用到数据库,保持数据库结构与代码同步。
- (额外工具) Prisma Studio: 一个可视化的 GUI 工具,用于在浏览器中查看和编辑数据库中的数据。
2. 主要特点与优势
- 极致的类型安全 (Type Safety): 这是 Prisma 最大的卖点。它会根据你的 Schema 自动生成 TypeScript 类型定义。这意味着你在写代码时能获得完美的自动补全,并且在编译阶段就能发现字段拼写错误或类型不匹配的问题。
- 直观的数据模型: schema.prisma 文件非常易读,即使是非数据库专家也能轻松理解数据结构和表之间的关系。
- 开发者体验 (DX) 极佳: 拥有优秀的 IDE 支持、自动补全和文档集成。
- 支持多种数据库: 目前支持 PostgreSQL, MySQL, SQL Server, SQLite, MongoDB, CockroachDB 等。
3. 工作流程示例
- 定义: 在 schema.prisma 中定义一个 User 模型。
- 迁移: 运行命令,Prisma 会在数据库中创建 User 表。
- 生成: Prisma 自动生成对应的 TypeScript 客户端代码。
- 使用: 在代码中直接使用 prisma.user.create(…),享受自动补全。
安装
# 安装prisma库
npm i @prisma/client常用指令
# prisma的一些指令
# format
npx prisma format
# 迁移数据库(通常用于修改了schema之后重新构建),可能会提示你重置数据库,这是生产环境不能允许的
npx prisma migrate dev --name <changement_name>
# 生产环境部署
npx prisma migrate deploy
# 手动生成client代码,通常迁移的时候会自动生成,除非加上--skip-generate跳过了。
npx prisma generate
# 打开数据表管理页面
npx prisma studio
# 重置数据库
npx prisma migrate reset
# 从现有数据库中构建schema.prisma
npx prisma db pull
# 直接同步数据库状态,某些情况下会导致数据库清空
npx prisma db push
# 数据库URL '#' 记得换成 '%23' 不然会有问题问题
migrate deploy失败
# 如果migrate deploy因为网络问题等,导致数据库迁移状态有问题
# 分两种情况:
# 1)数据库字段已经正常修改了,执行以下命令,将这条修改标记为已应用
npx prisma migrate resolve --applied 20260129030910_rename_definition_to_video_quality
# 2)如果数据库没有修改
# 标记为回滚
npx prisma migrate resolve --rolled-back 20260129030910_rename_definition_to_video_quality
# 随后重新运行迁移
npx prisma migrate deploy