WORLDBOOK

prisma | Worldbooks | WebMCP | Search | Submit

prisma

Category: Unknown Author: Unknown Version: 1.0.0 Updated: Unknown
0

Prisma CLI

Website: https://www.prisma.io CLI Tool: prisma Authentication: Database connection strings

Description

Prisma is a next-generation ORM (Object-Relational Mapping) for Node.js and TypeScript. The Prisma CLI manages database schemas, migrations, and generates type-safe database clients. Essential for modern backend development with databases like PostgreSQL, MySQL, SQLite, MongoDB, and SQL Server.

Commands

Initialization

Initialize Prisma

prisma init
prisma init --datasource-provider postgresql
prisma init --datasource-provider mysql
prisma init --datasource-provider sqlite
prisma init --datasource-provider mongodb

Initialize Prisma in project, creates prisma/schema.prisma.

Schema Management

Format Schema

prisma format

Format Prisma schema file.

Validate Schema

prisma validate

Validate schema for errors.

Generate Client

prisma generate
prisma generate --watch

Generate Prisma Client from schema. Use --watch for development.

Database Operations

Push Schema

prisma db push
prisma db push --skip-generate
prisma db push --accept-data-loss

Push schema state to database (dev only, no migrations).

Pull Schema

prisma db pull
prisma db pull --force

Introspect database and update schema.

Execute SQL

prisma db execute --file schema.sql --schema prisma/schema.prisma

Execute raw SQL against database.

Seed Database

prisma db seed

Run seed script defined in package.json.

Migrations

Create Migration

prisma migrate dev
prisma migrate dev --name init
prisma migrate dev --name add_users_table
prisma migrate dev --create-only

Create and apply migration in development.

Apply Migrations

prisma migrate deploy

Apply pending migrations in production.

Migration Status

prisma migrate status

Check migration status.

Reset Database

prisma migrate reset
prisma migrate reset --skip-seed

Reset database and re-apply all migrations.

Resolve Migration

prisma migrate resolve --applied <migration>
prisma migrate resolve --rolled-back <migration>

Mark migration as applied or rolled back.

Diff

prisma migrate diff \
  --from-schema-datamodel prisma/schema.prisma \
  --to-schema-datasource prisma/schema.prisma

Compare schema states.

Studio

Open Prisma Studio

prisma studio
prisma studio --port 5555
prisma studio --browser none

Open GUI to view and edit database data.

Introspection

Introspect Database

prisma db pull
prisma db pull --print
prisma db pull --force

Generate schema from existing database.

Version Management

Version Info

prisma version
prisma -v

Show Prisma version.

Debug

Debug Mode

DEBUG=* prisma generate
DEBUG=prisma:engine prisma generate

Run commands with debug output.

Examples

New Project Setup

# Initialize Prisma
npm install -D prisma
npx prisma init

# Edit prisma/schema.prisma
# Add your models

# Create database and tables
npx prisma db push

# Generate Prisma Client
npx prisma generate

# Open Studio to view data
npx prisma studio

Schema Example

// prisma/schema.prisma
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  posts     Post[]
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

Development Workflow

# Make schema changes
# Edit prisma/schema.prisma

# Create migration
npx prisma migrate dev --name add_post_views

# Generate updated client
npx prisma generate

# View data in Studio
npx prisma studio

Migration Workflow

# Development: create and apply migration
npx prisma migrate dev --name initial_schema

# Check migration status
npx prisma migrate status

# Production: apply pending migrations
npx prisma migrate deploy

# If issues occur, resolve
npx prisma migrate resolve --applied 20240101000000_migration_name

Database Operations

# Push schema changes (dev only)
npx prisma db push

# Pull schema from database
npx prisma db pull

# Reset database
npx prisma migrate reset

# Seed database
npx prisma db seed

Seed Script

// prisma/seed.js
const { PrismaClient } = require('@prisma/client')
const prisma = new PrismaClient()

async function main() {
  const user = await prisma.user.create({
    data: {
      email: 'alice@example.com',
      name: 'Alice',
      posts: {
        create: [
          { title: 'First Post', content: 'Hello World' }
        ]
      }
    }
  })
  console.log({ user })
}

main()
  .catch(e => console.error(e))
  .finally(async () => await prisma.$disconnect())
// package.json
{
  "prisma": {
    "seed": "node prisma/seed.js"
  }
}

Using Prisma Client

// app.ts
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()

async function main() {
  // Create user
  const user = await prisma.user.create({
    data: {
      email: 'bob@example.com',
      name: 'Bob'
    }
  })

  // Find users
  const users = await prisma.user.findMany({
    include: { posts: true }
  })

  // Update user
  await prisma.user.update({
    where: { id: 1 },
    data: { name: 'Bobby' }
  })

  // Delete user
  await prisma.user.delete({
    where: { id: 1 }
  })
}

main()
  .catch(console.error)
  .finally(() => prisma.$disconnect())

Multiple Databases

// prisma/schema.prisma
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

datasource analytics {
  provider = "mysql"
  url      = env("ANALYTICS_DATABASE_URL")
}

generator client {
  provider = "prisma-client-js"
}

CI/CD Integration

# .github/workflows/deploy.yml
- name: Run migrations
  run: npx prisma migrate deploy
  env:
    DATABASE_URL: ${{ secrets.DATABASE_URL }}

- name: Generate Prisma Client
  run: npx prisma generate

Introspection Workflow

# Pull schema from existing database
npx prisma db pull

# Review generated schema
cat prisma/schema.prisma

# Generate client
npx prisma generate

# Now you can use Prisma with existing database

Custom Output

generator client {
  provider = "prisma-client-js"
  output   = "../src/generated/client"
}

Debugging

# Enable debug logs
DEBUG=prisma:* npx prisma migrate dev

# Engine logs
DEBUG=prisma:engine npx prisma generate

# Query logs
DEBUG=prisma:query npx prisma studio

Schema Validation

# Validate schema
npx prisma validate

# Format schema
npx prisma format

# Check for issues
npx prisma validate --schema prisma/schema.prisma

Studio for Data Management

# Open Studio
npx prisma studio

# Custom port
npx prisma studio --port 5556

# Headless mode
npx prisma studio --browser none

# Specific schema
npx prisma studio --schema ./custom/schema.prisma

Notes

  • Schema File: prisma/schema.prisma defines data models
  • Prisma Client: Auto-generated, type-safe database client
  • Migrations: Version-controlled schema changes
  • Studio: Visual editor for database
  • Data Sources: PostgreSQL, MySQL, SQLite, MongoDB, SQL Server, CockroachDB
  • Generators: Prisma Client, custom generators
  • Relations: One-to-one, one-to-many, many-to-many
  • Indexes: @unique, @@index for performance
  • Default Values: @default for field defaults
  • Auto-increment: @id @default(autoincrement())
  • Timestamps: @updatedAt for automatic updates
  • Enums: Enumerated types support
  • JSON: JSON field type support
  • Raw SQL: Can execute raw queries when needed
  • Transactions: Supports database transactions
  • Connection Pooling: Built-in connection management
  • Middleware: Intercept queries for logging, etc.
  • Schema Validation: Compile-time type checking
  • Migration History: Stored in _prisma_migrations table
  • Seed Data: Populate database with initial data
  • Environment Variables: Use .env for DATABASE_URL
  • Prisma Engines: Query, migration, introspection engines
  • Preview Features: Experimental features in schema
  • Multi-schema: Support for multiple database schemas
  • Native Types: Database-specific type mappings
  • Referential Actions: Cascade, SetNull, etc.
  • Best Practices:
  • Use migrations in production (not db push)
  • Never edit migrations manually
  • Always generate client after schema changes
  • Use seeding for test data
  • Enable query logging in development
  • Use transactions for complex operations
  • Index frequently queried fields
  • Use select/include to optimize queries
  • Handle errors properly
  • Disconnect client when done
  • Use connection pooling in serverless
  • Version control schema.prisma
  • Keep migrations in git
  • Test migrations before deploying

Get this worldbook via CLI

worldbook get prisma

Comments (0)

Add a Comment

No comments yet. Be the first to comment!