Chapter
13 · Drizzle ORM (SQL-first)
Drizzle quickstart for App Router: schema, client, and query patterns.
Mental Model
- SQL-first, type-safe, minimal magic.
- Great fit for App Router when you want explicit queries.
Install (SQLite)
npm install drizzle-orm better-sqlite3
npm install -D drizzle-kitSchema
import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
export const users = sqliteTable("users", {
id: integer("id").primaryKey(),
email: text("email").notNull(),
});Client
import Database from "better-sqlite3";
import { drizzle } from "drizzle-orm/better-sqlite3";
const sqlite = new Database("dev.db");
export const db = drizzle(sqlite);Query
await db.select().from(users);SQLite → Postgres
- Swap driver; keep schema; run drizzle-kit generate.
- Maintain SQL-first workflow.