> ## Documentation Index
> Fetch the complete documentation index at: https://bun.zhcndoc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 在 Bun 中使用 Prisma

<Note>
  **注意** — Prisma 的动态子命令加载系统目前需要同时安装 npm 和 Bun。这会影响某些 CLI 命令，比如 `prisma init`、`prisma migrate` 等。通过新的 `prisma-client` 生成器生成的代码可以完美兼容 Bun。
</Note>

<Steps>
  <Step title="创建新项目">
    Prisma 可开箱即用支持 Bun。首先，创建一个目录并用 `bun init` 初始化。

    ```bash terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
    mkdir prisma-app
    cd prisma-app
    bun init
    ```
  </Step>

  <Step title="安装 Prisma 依赖">
    然后安装 Prisma CLI（`prisma`）、Prisma Client（`@prisma/client`）以及 LibSQL 适配器作为依赖。

    ```bash terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
    bun add -d prisma
    bun add @prisma/client @prisma/adapter-libsql
    ```
  </Step>

  <Step title="用 SQLite 初始化 Prisma">
    我们将使用带有 `bunx` 的 Prisma CLI 初始化 schema 和迁移目录。为简化起见，我们使用内存 SQLite 数据库。

    ```bash terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
    bunx --bun prisma init --datasource-provider sqlite
    ```

    这会创建一个基础 schema。我们需要将其更新为使用带 Bun 优化的新的无 Rust 客户端。打开 `prisma/schema.prisma` 并修改 generator 块，然后添加一个 `User` 模型。

    ```prisma prisma/schema.prisma icon="https://mintcdn.com/bun-zhcndoc/7hwCkUCcx3ux5DPj/icons/ecosystem/prisma.svg?fit=max&auto=format&n=7hwCkUCcx3ux5DPj&q=85&s=14eeb2b68dcdf648169d56e25ce2a81b" theme={"theme":{"light":"github-light","dark":"dracula"}}
      generator client {
        provider = "prisma-client" // [!code ++]
        output = "./generated" // [!code ++]
        engineType = "client" // [!code ++]
        runtime = "bun" // [!code ++]
      }

      datasource db {
        provider = "sqlite"
        url      = env("DATABASE_URL")
      }

      model User { // [!code ++]
        id    Int     @id @default(autoincrement()) // [!code ++]
        email String  @unique // [!code ++]
        name  String? // [!code ++]
      } // [!code ++]
    ```
  </Step>

  <Step title="创建并运行数据库迁移">
    然后生成并运行初始迁移。

    这将生成一个位于 `prisma/migrations` 的 `.sql` 迁移文件，创建一个新的 SQLite 实例，并对该实例执行迁移。

    ```bash terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
     bunx --bun prisma migrate dev --name init
    ```

    ```txt theme={"theme":{"light":"github-light","dark":"dracula"}}
    环境变量从 .env 加载
    Prisma schema 从 prisma/schema.prisma 加载
    数据源 "db": SQLite 数据库 "dev.db" 位于 "file:./dev.db"

    SQLite 数据库 dev.db 已创建，位置：file:./dev.db

    正在应用迁移 `20251014141233_init`

    以下迁移基于新的 schema 更改已创建并应用：

    prisma/migrations/
     └─ 20251014141233_init/
       └─ migration.sql

    你的数据库现已与 schema 同步。

    ✔ 在 18ms 内生成 Prisma Client (6.17.1) 到 ./generated
    ```
  </Step>

  <Step title="生成 Prisma Client">
    如输出所示，每当执行新迁移时，Prisma 会重新生成 *Prisma 客户端*。客户端为数据库的读写提供完全类型化的 API。你也可以通过 Prisma CLI 手动重新生成客户端。

    ```sh terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
    bunx --bun prisma generate
    ```
  </Step>

  <Step title="使用 LibSQL 初始化 Prisma Client">
    现在需要创建 Prisma 客户端实例。新建文件 `prisma/db.ts`，用 LibSQL 适配器初始化 PrismaClient。

    ```ts prisma/db.ts icon="https://mintcdn.com/bun-zhcndoc/cnUTwgMuf4cCrwC-/icons/typescript.svg?fit=max&auto=format&n=cnUTwgMuf4cCrwC-&q=85&s=e7767043c9e885c34f2d6c8fe2a95217" theme={"theme":{"light":"github-light","dark":"dracula"}}
    import { PrismaClient } from "./generated/client";
    import { PrismaLibSQL } from "@prisma/adapter-libsql";

    const adapter = new PrismaLibSQL({ url: process.env.DATABASE_URL || "" });
    export const prisma = new PrismaClient({ adapter });
    ```
  </Step>

  <Step title="创建一个测试脚本">
    让我们编写一个脚本：创建一个新用户，然后统计数据库中用户的数量。

    ```ts index.ts icon="https://mintcdn.com/bun-zhcndoc/cnUTwgMuf4cCrwC-/icons/typescript.svg?fit=max&auto=format&n=cnUTwgMuf4cCrwC-&q=85&s=e7767043c9e885c34f2d6c8fe2a95217" theme={"theme":{"light":"github-light","dark":"dracula"}}
    import { prisma } from "./prisma/db";

    // 创建一个新用户
    await prisma.user.create({
      data: {
        name: "John Dough",
        email: `john-${Math.random()}@example.com`,
      },
    });

    // 统计用户数量
    const count = await prisma.user.count();
    console.log(`数据库中共有 ${count} 名用户。`);
    ```
  </Step>

  <Step title="运行并测试应用">
    使用 `bun run` 运行脚本。每次运行都会创建一个新用户。

    ```bash terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
    bun run index.ts
    ```

    ```txg theme={"theme":{"light":"github-light","dark":"dracula"}}
    创建了 john-0.12802932895402364@example.com
    数据库中共有 1 名用户。
    ```

    ```bash terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
    bun run index.ts
    ```

    ```txt theme={"theme":{"light":"github-light","dark":"dracula"}}
    创建了 john-0.8671308799782803@example.com
    数据库中共有 2 名用户。
    ```

    ```bash terminal icon="terminal" theme={"theme":{"light":"github-light","dark":"dracula"}}
    bun run index.ts
    ```

    ```txt theme={"theme":{"light":"github-light","dark":"dracula"}}
    创建了 john-0.4465968383115295@example.com
    数据库中共有 3 名用户。
    ```
  </Step>
</Steps>

***

就这样！现在你已经用 Bun 配置好了 Prisma，接下来建议参考[官方 Prisma 文档](https://www.prisma.io/docs/orm/prisma-client)继续开发你的应用。
