Skip to content

Prisma starter with MySQL

简介与命令指南

一、简介

Prisma 是一款现代数据库工具包,可用于查询、迁移和建模数据库,简化与数据库的交互(https://prisma.io)。

二、安装与使用

通过以下命令安装 Prisma:

bash
npm install prisma --save-dev

三、命令列表

以下是 Prisma v6.6.0提供的常用命令:

常用前缀为npx prisma

命令说明
init为您的应用设置 Prisma
generate生成工件(例如 Prisma Client)
db管理数据库架构和生命周期
migrate迁移数据库
studio使用 Prisma Studio 浏览数据
validate验证 Prisma 架构
format格式化 Prisma 架构
version显示 Prisma 版本信息
debug显示 Prisma 调试信息
mcp启动 MCP 服务器,用于 AI 开发工具

四、功能增强(限量免费试用)

通过 Prisma Accelerate 优化性能,利用连接池和缓存提高效率;通过 Prisma Pulse 捕获数据库的实时事件。更多详情请访问:Prisma Data Platform

五、示例命令

  • 初始化新的 Prisma 项目:
bash
$ prisma init
  • 生成工件(例如 Prisma Client):
bash
$ prisma generate
  • 浏览数据:
bash
$ prisma studio
  • 从 Prisma 架构创建迁移并应用到数据库,生成工件(例如 Prisma Client):
bash
$ prisma migrate dev
  • 从现有数据库提取架构,更新 Prisma 架构:
bash
$ prisma db pull
  • 将 Prisma 架构状态推送到数据库:
bash
$ prisma db push
  • 验证 Prisma 架构:
bash
$ prisma validate
  • 格式化 Prisma 架构:
bash
$ prisma format
  • 显示 Prisma 版本信息:
bash
$ prisma version
  • 显示 Prisma 调试信息:
bash
$ prisma debug

Prisma Client

https://prisma.org.cn/docs/orm/prisma-client

要开始使用 Prisma Client,首先安装 @prisma/client

powershell
npm install @prisma/client

然后,运行 prisma generate,它会读取你的 Prisma schema 并生成 Prisma Client。(现在需要配置generate输出目录了而不是默认的node_modules下了)

powershell
npx prisma generate

每当你更新你的 Prisma schema 时,你都必须使用 prisma migrate dev 或 prisma db push 来更新你的数据库 schema。这将使你的数据库 schema 与你的 Prisma schema 保持同步。这些命令还将在后台运行 prisma generate 以重新生成你的 Prisma Client。

Prisma Migrate

https://prisma.org.cn/docs/orm/prisma-migrate/understanding-prisma-migrate

Prisma Migrate 是一个数据库迁移工具,它支持模型/实体优先迁移模式,用于管理本地环境和生产环境中的数据库 schema。

数据库迁移的概念

数据库迁移是一组受控的更改,用于修改和演变你的数据库 schema 的结构。迁移帮助你将数据库 schema 从一种状态过渡到另一种状态。例如,在迁移中,你可以创建或删除表和列,拆分表中的字段,或向数据库添加类型和约束。

迁移提供状态管理,这可以帮助你跟踪数据库的状态。

主要的 schema 迁移模式有两种:

  • 模型/实体优先迁移: 使用这种模式,你用代码定义数据库 schema 的结构,然后使用迁移工具生成 SQL,例如,用于同步你的应用程序和数据库 schema。
  • 数据库优先迁移: 使用这种模式,你定义你的数据库结构,并使用 SQL 将其应用于你的数据库。然后你内省数据库以生成描述你的数据库结构的代码,从而同步你的应用程序和数据库 schema。

使用

在你的项目中使用 Prisma Migrate 时,工作流程将是迭代的

  • 本地开发环境(功能分支)

示例

https://prisma.org.cn/docs/getting-started/setup-prisma/start-from-scratch/relational-databases/querying-the-database-typescript-mysql

plain
model Post {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  title     String   @db.VarChar(255)
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
}

model Profile {
  id     Int     @id @default(autoincrement())
  bio    String?
  user   User    @relation(fields: [userId], references: [id])
  userId Int     @unique
}

model User {
  id      Int      @id @default(autoincrement())
  email   String   @unique
  name    String?
  posts   Post[]
  profile Profile?
}
tsx
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  // ... you will write your Prisma Client queries here
}

main()
  .then(async () => {
    await prisma.$disconnect()
  })
  .catch(async (e) => {
    console.error(e)
    await prisma.$disconnect()
    process.exit(1)
  })