import { drizzle } from 'drizzle-orm/node-postgres';import { Pool } from 'pg';const pool = new Pool({ host: 'localhost', port: 5432, user: 'postgres', password: 'password', database: 'mydb',});const db = drizzle(pool);
import { drizzle } from 'drizzle-orm/node-postgres';import { Pool } from 'pg';const pool = new Pool({ host: 'localhost', port: 5432, user: 'postgres', password: 'password', database: 'mydb', max: 20, // Maximum pool size idleTimeoutMillis: 30000, connectionTimeoutMillis: 2000,});const db = drizzle(pool);
import { drizzle } from 'drizzle-orm/neon-serverless';import { Pool } from '@neondatabase/serverless';const pool = new Pool({ connectionString: process.env.DATABASE_URL });const db = drizzle(pool);
Required for environments without native WebSocket support:
import { drizzle } from 'drizzle-orm/neon-serverless';import { Pool, neonConfig } from '@neondatabase/serverless';import ws from 'ws';// Option 1: Set globallyneonConfig.webSocketConstructor = ws;const pool = new Pool({ connectionString: process.env.DATABASE_URL });const db = drizzle(pool);// Option 2: Pass in configconst db = drizzle({ connection: process.env.DATABASE_URL, ws,});
import { drizzle } from 'drizzle-orm/vercel-postgres';import { sql } from '@vercel/postgres';import * as schema from './schema';// Uses default @vercel/postgres clientconst db = drizzle({ schema });// Or explicitly pass the clientconst db = drizzle(sql, { schema });
import { drizzle } from 'drizzle-orm/node-postgres';import { Pool } from 'pg';const pool = new Pool({ connectionString: process.env.DATABASE_URL });const db = drizzle(pool);
Recommended: Neon Serverless
WebSocket-based connections
Optimized for serverless cold starts
Compatible with Neon, AWS Lambda, etc.
import { drizzle } from 'drizzle-orm/neon-serverless';import { Pool } from '@neondatabase/serverless';const pool = new Pool({ connectionString: process.env.DATABASE_URL });const db = drizzle(pool);
Recommended: Neon HTTP or Vercel Postgres
HTTP-based, no persistent connections
Works in Cloudflare Workers, Vercel Edge, etc.
Minimal cold start overhead
import { drizzle } from 'drizzle-orm/neon-http';import { neon } from '@neondatabase/serverless';const sql = neon(process.env.DATABASE_URL);const db = drizzle(sql);
All drivers support creating mock instances for testing:
import { drizzle } from 'drizzle-orm/node-postgres';import * as schema from './schema';const mockDb = drizzle.mock({ schema });// Use in tests without a real database connection
Mock databases are useful for unit testing query builders but don’t execute actual SQL.