Rustエンジンなし
v6.7.0以降、PostgreSQL、SQLite、D1、PlanetScale、MS SQL ServerデータベースでPrisma ORMをRustエンジンバイナリなしで使用できます。
このページでは、このバージョンのPrisma ORMの使用方法の概要を説明します。
RustエンジンなしのPrisma ORM
RustエンジンなしでPrisma ORMを使用する場合の主な技術的な違いは次のとおりです。
generator
ブロックにbinaryTargets
およびengineType
フィールドがない- 生成されたPrisma Clientのディレクトリにクエリエンジンバイナリがダウンロードされない
- データベース接続管理のためにドライバーアダプターの使用が必須
使用方法
前提条件
- Prisma ORM v6.7.0(またはそれ以降)
1. フィーチャーフラグの設定
新しいアーキテクチャを使用するには、driverAdapters
とqueryCompiler
のフィーチャーフラグを設定する必要があります。
schema.prisma
generator client {
provider = "prisma-client-js" // or `prisma-client`
previewFeatures = ["queryCompiler", "driverAdapters"]
output = "../generated/prisma"
}
2. Prisma Clientの再生成
フィーチャーフラグを有効にするには、Prisma Clientを再生成する必要があります。
npx prisma generate
3. ドライバーアダプターのインストール
使用するデータベースに応じて、異なるドライバーアダプターライブラリをインストールする必要があります。
- PostgreSQL
- SQLite
- D1
- PlanetScale
- MSSQL
npm install @prisma/adapter-pg
npm install @prisma/adapter-better-sqlite3
npm install @prisma/adapter-d1
npm install @prisma/adapter-planetscale
npm install @prisma/adapter-mssql
4. Prisma Clientのインスタンス化
最後に、使用しているデータベースインスタンスのドライバーアダプターと接続URLを使用してPrisma Clientをインスタンス化する必要があります。
- PostgreSQL
- SQLite
- D1
- PlanetScale
- MSSQL
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from './generated/prisma'
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';
const adapter = new PrismaBetterSQLite3({ url: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter });
import { PrismaClient } from '@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 { PrismaPlanetScale } from '@prisma/adapter-planetscale'
import { PrismaClient } from '@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';
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 });
5. データベースのクエリ
上記のステップを完了していれば、Prisma Clientで慣れ親しんだ方法でデータベースをクエリできます。その他の変更は必要ありません。