无 Rust 引擎
自 v6.16.0 起,在 PostgreSQL、CockroachDB、Neon、MySQL、PlanetScale、SQLite、D1 和 MS SQL Server 数据库上,在没有 Rust 引擎二进制文件的情况下使用 Prisma ORM 已 普遍可用。
本页概述了如何使用此版本的 Prisma ORM。
没有 Rust 引擎的 Prisma ORM
如果您在没有 Rust 引擎的情况下使用 Prisma ORM,主要的技术区别在于:
- `generator` 块上没有 `binaryTargets` 字段
- 没有下载到生成 Prisma 客户端目录中的查询引擎二进制文件
- `generator` 块上的 `engineType` 需要设置为 `"client"`
- 需要使用 驱动适配器 进行数据库连接管理
不含 Rust 的 Prisma ORM 版本已通过 `prisma-client` 生成器(见下文)进行了彻底测试,而不是 `prisma-client-js`。请自行决定使用旧的生成器。
用法
先决条件
- Prisma ORM v6.15.0(或更高版本)
1. 在 `generator` 块上设置 `engineType`
generator client {
provider = "prisma-client" // or `prisma-client-js`
output = "../generated/prisma"
engineType = "client" // enable Prisma ORM without Rust
}
2. 重新生成 Prisma 客户端
要使配置生效,您需要重新生成 Prisma 客户端
npx prisma generate
3. 安装驱动适配器
根据您使用的数据库,您需要安装不同的驱动适配器库
- PostgreSQL
- SQLite
- D1
- MySQL/MariaDB
- PlanetScale
- MSSQL
- CockroachDB
- Neon Serverless
npm install @prisma/adapter-pg
npm install @prisma/adapter-better-sqlite3
npm install @prisma/adapter-d1
npm install @prisma/adapter-mariadb
npm install @prisma/adapter-planetscale
npm install @prisma/adapter-mssql
npm install @prisma/adapter-pg
npm install @prisma/adapter-neon
4. 实例化 Prisma 客户端
最后,实例化 Prisma 客户端,您可以使用驱动适配器和您正在使用的数据库实例的连接 URL 来完成此操作
- PostgreSQL
- SQLite
- D1
- MySQL/MariaDB
- PlanetScale
- MSSQL
- CockroachDB
- Neon Serverless
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../generated/prisma/client'
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
import { PrismaClient } from '../generated/prisma/client';
const adapter = new PrismaBetterSqlite3({ url: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter });
import { PrismaClient } from '../generated/prisma/client'
import { PrismaD1 } from '@prisma/adapter-d1'
export interface Env {
DB: D1Database
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext
): Promise<Response> {
const adapter = new PrismaD1(env.DB)
const prisma = new PrismaClient({ adapter })
// …
// ... query your DB
},
}
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
import { PrismaClient } from '../generated/prisma/client';
const adapter = new PrismaMariaDb({
host: "localhost",
port: 3306,
connectionLimit: 5
});
const prisma = new PrismaClient({ adapter });
import { PrismaPlanetScale } from '@prisma/adapter-planetscale'
import { PrismaClient } from '../generated/prisma/client'
import { fetch as undiciFetch } from 'undici'
const adapter = new PrismaPlanetScale({ url: process.env.DATABASE_URL, fetch: undiciFetch })
const prisma = new PrismaClient({ adapter })
import { PrismaMssql } from '@prisma/adapter-mssql';
import { PrismaClient } from '../generated/prisma/client';
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
server: process.env.HOST,
pool: {
max: 10,
min: 0,
idleTimeoutMillis: 30000
},
options: {
encrypt: true, // for azure
trustServerCertificate: false // change to true for local dev / self-signed certs
}
}
const adapter = new PrismaMssql(sqlConfig)
const prisma = new PrismaClient({ adapter });
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../generated/prisma/client'
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
import { PrismaClient } from '../generated/prisma/client'
import { PrismaNeon } from '@prisma/adapter-neon'
import dotenv from 'dotenv'
dotenv.config()
const connectionString = `${process.env.DATABASE_URL}`
const adapter = new PrismaNeon({ connectionString })
const prisma = new PrismaClient({ adapter })
5. 查询您的数据库
如果您完成了前面的步骤,您就可以像使用 Prisma 客户端一样查询您的数据库。无需其他更改。
与 Prisma Accelerate 或 Prisma Postgres 一起使用
当在没有 Rust 的 Prisma ORM 版本中使用 Prisma Accelerate 或 Prisma Postgres 时,您**不应**使用驱动适配器。相反,您可以直接使用适当的扩展实例化 Prisma 客户端。
1. 在 `generator` 块上设置 `engineType`
generator client {
provider = "prisma-client" // or `prisma-client-js`
output = "../generated/prisma"
engineType = "client" // enable Prisma ORM without Rust
}
2. 重新生成 Prisma 客户端
要使配置生效,您需要重新生成 Prisma 客户端
npx prisma generate
3. 使用 Accelerate 实例化 Prisma 客户端
导入并使用 Accelerate 扩展实例化 Prisma 客户端
import { PrismaClient } from "../generated/prisma/client";
import { withAccelerate } from "@prisma/extension-accelerate";
const prisma = new PrismaClient().$extends(withAccelerate());
4. 查询您的数据库
如果您完成了前面的步骤,您就可以像使用 Prisma 客户端一样查询您的数据库。无需其他更改。
与旧版本一起使用(预览版)
不含 Rust 的 Prisma ORM 版本从 v6.7.0 到 v6.14.0 一直处于预览阶段。如果您正在使用这些版本中的任何一个并且无法升级到最新版本,请展开下面的内容。
展开以查看 Prisma ORM v6.7.0 到 v6.14.0 的说明
先决条件
- 任何 Prisma ORM 版本在 6.7.0 和 6.14.0 之间
1. 设置功能标志
使用新架构需要设置 `driverAdapters` 和 `queryCompiler` 功能标志
generator client {
provider = "prisma-client"
previewFeatures = ["queryCompiler", "driverAdapters"]
output = "../generated/prisma"
}
2. 重新生成 Prisma 客户端
要使功能标志生效,您需要重新生成 Prisma 客户端
npx prisma generate
3. 安装驱动适配器
根据您使用的数据库,您需要安装不同的驱动适配器库
- PostgreSQL
- SQLite
- D1
- MySQL/MariaDB
- PlanetScale
- MSSQL
- CockroachDB
- Neon Serverless
npm install @prisma/adapter-pg
npm install @prisma/adapter-better-sqlite3
npm install @prisma/adapter-d1
npm install @prisma/adapter-mariadb
npm install @prisma/adapter-planetscale
npm install @prisma/adapter-mssql
npm install @prisma/adapter-pg
npm install @prisma/adapter-neon
4. 实例化 Prisma 客户端
最后,您需要实例化 Prisma 客户端,您可以使用驱动适配器和您正在使用的数据库实例的连接 URL 来完成此操作。
- PostgreSQL
- SQLite
- D1
- MySQL/MariaDB
- PlanetScale
- MSSQL
- CockroachDB
- Neon Serverless
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../generated/prisma/client'
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
import { PrismaClient } from '../generated/prisma/client';
const adapter = new PrismaBetterSqlite3({ url: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter });
import { PrismaClient } from '../generated/prisma/client'
import { PrismaD1 } from '@prisma/adapter-d1'
export interface Env {
DB: D1Database
}
export default {
async fetch(
request: Request,
env: Env,
ctx: ExecutionContext
): Promise<Response> {
const adapter = new PrismaD1(env.DB)
const prisma = new PrismaClient({ adapter })
// ... query your DB
},
}
import { PrismaMariaDb } from '@prisma/adapter-mariadb';
import { PrismaClient } from '../generated/prisma/client';
const adapter = new PrismaMariaDb({
host: "localhost",
port: 3306,
connectionLimit: 5
});
const prisma = new PrismaClient({ adapter });
import { PrismaPlanetScale } from '@prisma/adapter-planetscale'
import { PrismaClient } from '../generated/prisma/client'
import { fetch as undiciFetch } from 'undici'
const adapter = new PrismaPlanetScale({ url: process.env.DATABASE_URL, fetch: undiciFetch })
const prisma = new PrismaClient({ adapter })
import { PrismaMssql } from '@prisma/adapter-mssql';
import { PrismaClient } from '../generated/prisma/client';
const sqlConfig = {
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
server: process.env.HOST,
pool: {
max: 10,
min: 0,
idleTimeoutMillis: 30000
},
options: {
encrypt: true, // for azure
trustServerCertificate: false // change to true for local dev / self-signed certs
}
}
const adapter = new PrismaMssql(sqlConfig)
const prisma = new PrismaClient({ adapter });
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../generated/prisma/client'
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
import { PrismaClient } from '../generated/prisma/client'
import { PrismaNeon } from '@prisma/adapter-neon'
import dotenv from 'dotenv'
dotenv.config()
const connectionString = `${process.env.DATABASE_URL}`
const adapter = new PrismaNeon({ connectionString })
const prisma = new PrismaClient({ adapter })
5. 查询您的数据库
如果您完成了前面的步骤,您就可以像使用 Prisma 客户端一样查询您的数据库。无需其他更改。