Prisma ORM
Last updated Oct 15, 2026 is a Node.js and TypeScript ORM with a focus on type safety and developer experience. This example demonstrates how to use Prisma ORM with PostgreSQL via Cloudflare Hyperdrive in a Workers application.
Prerequisites
- A Cloudflare account with Workers access
- A PostgreSQL database (such as Prisma Postgres ↗︎)
- A Hyperdrive configuration to your PostgreSQL database
- An existing Worker project
1. Install Prisma ORM
Install Prisma CLI as a dev dependency:
npmyarnpnpmbun
npm i -D prisma
yarn add -D prisma
pnpm add -D prisma
bun add -d prisma
Install the pg driver and Prisma driver adapter for use with Hyperdrive:
npmyarnpnpmbun
npm i pg@>8.16.3 @prisma/adapter-pg
yarn add pg@>8.16.3 @prisma/adapter-pg
pnpm add pg@>8.16.3 @prisma/adapter-pg
bun add pg@>8.16.3 @prisma/adapter-pg
If using TypeScript, install the types package:
npmyarnpnpmbun
npm i -D @types/pg
yarn add -D @types/pg
pnpm add -D @types/pg
bun add -d @types/pg
Add the required Node.js compatibility flags and Hyperdrive binding to your Wrangler configuration file:
{
// required for database drivers to function
"compatibility_flags": [
"nodejs_compat"
],
// Set this to today's date
"compatibility_date": "2026-10-27",
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<your-hyperdrive-id-here>"
}
]
}
compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-10-27"
[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"
2. Configure Prisma ORM
2.1. Initialize Prisma
Initialize Prisma in your application:
npx prisma init
This creates a prisma folder with a schema.prisma file and an .env file.
2.2. Define a schema
Define your database schema in the prisma/schema.prisma file:
prisma/schema.prismaprisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
name String
email String @unique
createdAt DateTime @default(now())
}
2.3. Set up environment variables
Add your database connection string to the .env file created by Prisma:
.envtxt
DATABASE_URL="postgres://user:password@host:port/database"
Add helper scripts to your package.json:
package.jsonjson
"scripts": {
"migrate": "npx prisma migrate dev",
"generate": "npx prisma generate --no-engine",
"studio": "npx prisma studio"
}
2.4. Generate Prisma Client
Generate the Prisma client with driver adapter support:
npm run generate
2.5. Run migrations
Generate and apply the database schema:
npm run migrate
When prompted, provide a name for the migration (for example, init).
3. Connect Prisma ORM to Hyperdrive
Use your Hyperdrive configuration when using Prisma ORM. Update your src/index.ts file:
src/index.tsts
import { PrismaPg } from "@prisma/adapter-pg";
import { PrismaClient } from "@prisma/client";
export interface Env {
HYPERDRIVE: Hyperdrive;
}
export default {
async fetch(request, env, ctx): Promise<Response> {
// Create Prisma client using driver adapter with Hyperdrive connection string
const adapter = new PrismaPg({ connectionString: env.HYPERDRIVE.connectionString });
const prisma = new PrismaClient({ adapter });
// Sample query to create and fetch users
const user = await prisma.user.create({
data: {
name: "John Doe",
email: `john.doe.${Date.now()}@example.com`,
},
});
const allUsers = await prisma.user.findMany();
return Response.json({
newUser: user,
allUsers: allUsers,
});
},
} satisfies ExportedHandler<Env>;
Note
When using Prisma ORM with Hyperdrive, you must use driver adapters to properly utilize the Hyperdrive connection string. The @prisma/adapter-pg driver adapter allows Prisma ORM to work with the pg driver and Hyperdrive's connection pooling. This approach provides connection pooling at the network level through Hyperdrive, so you don't need Prisma-specific connection pooling extensions like Prisma Accelerate.
4. Deploy your Worker
Deploy your Worker:
npx wrangler deploy
Next steps
- Learn more about How Hyperdrive Works.
- Refer to the troubleshooting guide to debug common issues.
- Understand more about other storage options available to Cloudflare Workers.
Was this helpful?
YesNo
On this page
{"@context":"https://schema.org","@type":"TechArticle","@id":"https://developers.cloudflare.com/hyperdrive/examples/connect-to-postgres/postgres-drivers-and-libraries/prisma-orm/#page","headline":"Prisma ORM","description":"Use Prisma ORM with Hyperdrive to query PostgreSQL databases from Cloudflare Workers.","url":"https://developers.cloudflare.com/hyperdrive/examples/connect-to-postgres/postgres-drivers-and-libraries/prisma-orm/","inLanguage":"en","image":"https://developers.cloudflare.com/hyperdrive/examples/connect-to-postgres/postgres-drivers-and-libraries/prisma-orm/og.png?v=6066711e8b3d20c1","dateModified":"2026-10-15","publisher":{"@type":"Organization","name":"Cloudflare","description":"One platform for your apps, agents, and workforce. Build, secure, and scale without managing infrastructure","url":"https://www.cloudflare.com/","sameAs":["https://github.com/cloudflare","https://www.linkedin.com/company/cloudflare","https://x.com/cloudflare"],"logo":{"@type":"ImageObject","url":"https://developers.cloudflare.com/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"101 Townsend St","addressLocality":"San Francisco","addressRegion":"CA","postalCode":"94107","addressCountry":"US"},"contactPoint":[{"@type":"ContactPoint","contactType":"Customer Support","url":"https://support.cloudflare.com/","availableLanguage":["English"]},{"@type":"ContactPoint","contactType":"Sales","url":"https://www.cloudflare.com/contact/","availableLanguage":["English"]}]},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
description: Connect Python Workers to PostgreSQL and MySQL with Hyperdrive. title: Python Workers image: https://developers.cloudflare.com/hyperdrive/examples/python-workers/og.png?v=180cd422a4dff713
Documentation Index
Fetch the complete documentation index at: https://developers.cloudflare.com/hyperdrive/llms.txt
Use this file to discover all available pages before exploring further.
Docs