Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

Drizzle ORM

Drizzle ORM is a TypeScript ORM. In this guide, you'll learn how to connect Drizzle ORM to Prisma Postgres.

  • Node.js version 16 or higher
  • TypeScript version 5.0 or higher

Create a new directory for your project and initialize it with npm:

title="bun"
mkdir drizzle-quickstart

cd drizzle-quickstart

bun init
pnpm
mkdir drizzle-quickstart
cd drizzle-quickstart
pnpm init
yarn
mkdir drizzle-quickstart
cd drizzle-quickstart
yarn init
npm
mkdir drizzle-quickstart
cd drizzle-quickstart
npm init

Install TypeScript and initialize it:

title="bun"
bun add --dev typescript
pnpm
pnpm add --save-dev typescript
yarn
yarn add --dev typescript
npm
npm install --save-dev typescript
title="bun"
bunx tsc --init
pnpm
pnpm tsc --init
yarn
yarn tsc --init
npm
npx tsc --init

In your package.json, set the type to module:

title="package.json"
{

  // ...

  "type": "module"

  // ...

}

Create a Prisma Postgres database with the create-db CLI tool:

title="bun"
bunx create-db
pnpm
pnpm dlx create-db
yarn
yarn dlx create-db
npm
npx create-db

Then the CLI tool should output:

┌  🚀 Creating a Prisma Postgres database

│

│  Provisioning a temporary database in us-east-1...

│

│  It will be automatically deleted in 24 hours, but you can claim it.

│

◇  Database created successfully!

│

│

●  Database Connection

│

│

│    Connection String:

│

│    postgresql://hostname:password@db.prisma.io:5432/postgres?sslmode=require

│

│

◆  Claim Your Database

│

│    Keep your database for free:

│

│    https://create-db.prisma.io/claim?CLAIM_CODE

│

│    Database will be deleted on 11/18/2025, 1:55:39 AM if not claimed.

│

└

Create a .env file and add the connection string from the output:

title=".env"
DATABASE_URL="postgresql://hostname:password@db.prisma.io:5432/postgres?sslmode=require"

The database created is temporary and will be deleted in 24 hours unless claimed. Claiming moves the database into your Prisma Data Platform account. Visit the claim URL from the output to keep your database.

Install Drizzle ORM and the PostgreSQL driver:

title="bun"
bun add drizzle-orm pg dotenv
pnpm
pnpm add drizzle-orm pg dotenv
yarn
yarn add drizzle-orm pg dotenv
npm
npm install drizzle-orm pg dotenv
title="bun"
bun add --dev drizzle-kit @types/pg tsx
pnpm
pnpm add --save-dev drizzle-kit @types/pg tsx
yarn
yarn add --dev drizzle-kit @types/pg tsx
npm
npm install --save-dev drizzle-kit @types/pg tsx

Package breakdown:

  • drizzle-orm: The lightweight TypeScript ORM
  • pg: PostgreSQL driver for Node.js
  • dotenv: Loads environment variables from .env file
  • drizzle-kit: CLI tool for migrations and schema management
  • @types/pg: TypeScript type definitions for the pg driver
  • tsx: TypeScript execution engine for running .ts files directly

Create a src/script.ts file:

title="src/script.ts"
import "dotenv/config";

import { drizzle } from "drizzle-orm/node-postgres";

import { Pool } from "pg";

const pool = new Pool({

  connectionString: process.env.DATABASE_URL,

});

const db = drizzle({ client: pool });

async function main() {

  const result = await db.execute("select 1");

  console.log("Query result:", result);

}

main()

  .then(async () => {

    await pool.end();

    console.log("Connection closed");

  })

  .catch(async (error) => {

    console.error("Error:", error);

    await pool.end();

    process.exit(1);

  });

Run the script:

title="bun"
bunx tsx src/script.ts
pnpm
pnpm dlx tsx src/script.ts
yarn
yarn dlx tsx src/script.ts
npm
npx tsx src/script.ts

You should receive output similar to:

Query result: Result {

  command: 'SELECT',

  rowCount: 1,

  oid: null,

  rows: [ { '?column?': 1 } ],

  fields: [

    Field {

      name: '?column?',

      tableID: 0,

      columnID: 0,

      dataTypeID: 23,

      dataTypeSize: 4,

      dataTypeModifier: -1,

      format: 'text'

    }

  ],

  _parsers: [ [Function: parseInteger] ],

  _types: { getTypeParser: [Function: getTypeParser] },

  RowCtor: null,

  rowAsArray: false,

  _prebuiltEmptyResultObject: { '?column?': null }

}

Connection closed

Drizzle ORM is now connected to Prisma Postgres. For schemas, migrations, and queries, see the Drizzle ORM documentation.

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu