資料庫驅動
預設內建驅動
Prisma Client 的元件之一是 查詢引擎(Query Engine)。查詢引擎負責將 Prisma Client 查詢轉換為 SQL 語句。它使用無需額外設定的內建驅動透過 TCP 連線到您的資料庫。
自 v6.7.0 起,Prisma ORM 引入了 queryCompiler 預覽特性。
啟用後,您的 Prisma Client 將在生成時不包含基於 Rust 的查詢引擎二進位制檔案:
generator client {
provider = "prisma-client-js"
previewFeatures = ["queryCompiler", "driverAdapters"]
}
請注意,
queryCompiler需要同時啟用 驅動介面卡 預覽特性。

驅動介面卡
Prisma Client 可以使用 JavaScript 資料庫驅動透過驅動介面卡連線到您的資料庫並執行查詢。介面卡充當 Prisma Client 和 JavaScript 資料庫驅動之間的轉換器。
Prisma Client 將使用查詢引擎將 Prisma Client 查詢轉換為 SQL,並透過 JavaScript 資料庫驅動執行生成的 SQL 查詢。

驅動介面卡有兩種不同的型別
注意:驅動介面卡支援使用 Prisma ORM 的應用程式進行邊緣部署。
資料庫驅動介面卡
您可以使用資料庫驅動介面卡,透過 Prisma Client 連線到您的資料庫,使用基於 Node.js 的驅動。Prisma 維護以下資料庫驅動介面卡
- PostgreSQL
- SQLite
better-sqlite3libSQL(Turso)
- MSSQL
無伺服器驅動介面卡
資料庫提供商,例如 Neon 和 PlanetScale,允許您除了 TCP 之外,還可以使用其他協議(如 HTTP 和 WebSockets)連線到資料庫。這些資料庫驅動程式已針對無伺服器和邊緣環境中的資料庫連線進行了最佳化。
Prisma ORM 維護以下無伺服器驅動介面卡
- Neon(和 Vercel Postgres)
- PlanetScale
- Cloudflare D1
社群維護的資料庫驅動介面卡
您也可以為您正在使用的資料庫構建自己的驅動介面卡。以下是社群維護的驅動介面卡列表
如何使用驅動介面卡
要使用此功能
-
更新您的 schema 中的
previewFeatures塊,以包含driverAdapters預覽特性generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
} -
生成 Prisma Client
npx prisma generate -
請參閱以下頁面,瞭解如何將特定驅動介面卡與特定資料庫提供商配合使用
關於使用驅動介面卡的注意事項
v6.6.0 中新的驅動介面卡 API
在 v6.6.0 中,我們引入了一個簡化的版本,用於在使用驅動介面卡時例項化 Prisma Client。您現在無需建立驅動程式/客戶端例項來傳遞給驅動介面卡,而是可以直接建立驅動介面卡(並根據需要將驅動程式選項傳遞給它)。
以下是使用 @prisma/adapter-libsql 介面卡的示例
6.6.0 之前
早期版本的 Prisma ORM 要求您首先例項化驅動程式本身,然後使用該例項建立 Prisma 驅動介面卡。以下是使用 LibSQL 的 @libsql/client 驅動程式的示例
import { createClient } from '@libsql/client'
import { PrismaLibSQL } from '@prisma/adapter-libsql'
import { PrismaClient } from '@prisma/client'
// Old way of using driver adapters (before 6.6.0)
const driver = createClient({
url: env.LIBSQL_DATABASE_URL,
authToken: env.LIBSQL_DATABASE_TOKEN,
})
const adapter = new PrismaLibSQL(driver)
const prisma = new PrismaClient({ adapter })
6.6.0 及更高版本
自 6.6.0 版本釋出以來,您可以直接使用您首選的 JS 原生驅動程式的選項來例項化驅動介面卡。
import { PrismaLibSQL } from '@prisma/adapter-libsql'
import { PrismaClient } from '../prisma/prisma-client'
const adapter = new PrismaLibSQL({
url: env.LIBSQL_DATABASE_URL,
authToken: env.LIBSQL_DATABASE_TOKEN,
})
const prisma = new PrismaClient({ adapter })
驅動介面卡不從 Prisma schema 中讀取連線字串
使用 Prisma ORM 的內建驅動時,連線字串是從 Prisma schema 中 datasource 塊的 url 欄位讀取的。
另一方面,當使用驅動介面卡時,連線字串需要在驅動介面卡初次設定時在您的應用程式程式碼中提供。以下是 pg 驅動和 @prisma/adapter-pg 介面卡的實現方式
import { PrismaClient } from '@prisma/client'
import { PrismaPg } from '@prisma/adapter-pg'
const adapter = new PrismaPg({ connectionString: env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
有關具體的設定說明,請參閱您正在使用的驅動介面卡的文件。
驅動介面卡和自定義輸出路徑
自 Prisma 5.9.0 起,當將驅動介面卡預覽特性與 Prisma Client 的自定義輸出路徑 一起使用時,您不能使用相對路徑引用 Prisma Client。
假設您的 Prisma schema 中的 output 設定為 ../src/generated/client
generator client {
provider = "prisma-client-js"
output = "../src/generated/client"
}
您不應該做的是相對引用該路徑
// what not to do!
import { PrismaClient } from './src/generated/client'
const client = new PrismaClient()
相反,您需要使用連結依賴項。
- npm
- pnpm
- yarn
npm add db@./src/generated/client
pnpm add db@link:./src/generated/client
yarn add db@link:./src/generated/client
現在,您應該能夠使用 db 引用您生成的客戶端了!
import { PrismaClient } from 'db'
const client = new PrismaClient()
驅動介面卡和特定框架
Nuxt
使用驅動介面卡與 Nuxt 部署到邊緣函式環境無法直接工作,但新增 nitro.experimental.wasm 配置選項可以解決這個問題
export default defineNuxtConfig({
// ...
nitro: {
// ...
experimental: {
wasm: true,
},
},
// ...
})