Skip to main content
Prisma Documentation Docs

Search documentation

Type to search this documentation.

On this pageOverview

Introduction to Prisma Client

Prisma Client is an auto-generated and type-safe query builder that's tailored to your data. To get started with Prisma Client, follow the Quickstart.

Quickstart (5 min)

In order to set up Prisma Client, you need a Prisma Config and a Prisma schema file:

Config"
import 'dotenv/config';

import { defineConfig, env } from 'prisma/config';

export default defineConfig({

  schema: 'prisma/schema.prisma',

  datasource: {

    url: env('DATABASE_URL'),

  },

});
Prisma Schema
datasource db {
  provider = "postgresql"
}

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

model User {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  email     String   @unique
  name      String?
}

Install the Prisma CLI, the Prisma Client library, and the driver adapter for your database:

bun add prisma@prev --dev

bun add @prisma/client@7 @prisma/adapter-pg pg
Bash
pnpm add prisma@prev --save-dev
pnpm add @prisma/client@7 @prisma/adapter-pg pg
Bash
yarn add prisma@prev --dev
yarn add @prisma/client@7 @prisma/adapter-pg pg
Bash
npm install prisma@prev --save-dev
npm install @prisma/client@7 @prisma/adapter-pg pg
Bash
    bun add prisma@prev --dev
    bun add @prisma/client@7 @prisma/adapter-mariadb mariadb
    ```
Bash
    bun add prisma@prev --dev
    bun add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3
    ```

Prisma Client is based on the models in Prisma Schema. To provide the correct types, you need generate the client code:

bunx prisma generate
Bash
pnpm add prisma@prev --save-dev
pnpm add @prisma/client@7 @prisma/adapter-mariadb mariadb
Bash
yarn add prisma@prev --dev
yarn add @prisma/client@7 @prisma/adapter-mariadb mariadb
Bash
npm install prisma@prev --save-dev
npm install @prisma/client@7 @prisma/adapter-mariadb mariadb

This will create a generated directory based on where you set the output to in the Prisma Schema. Any time your import Prisma Client, it will need to come from this generated client API.

With the client generated, import it along with your driver adapter and create a new instance:

import { PrismaClient } from "./path/to/generated/prisma";

import { PrismaPg } from "@prisma/adapter-pg";

const adapter = new PrismaPg({

  connectionString: process.env.DATABASE_URL!,

});

export const prisma = new PrismaClient({ adapter });
TypeScript
import { PrismaClient } from "./path/to/generated/prisma";
import { PrismaMariaDb } from "@prisma/adapter-mariadb";

const adapter = new PrismaMariaDb({
  host: "localhost",
  user: "root",
  database: "mydb",
});

export const prisma = new PrismaClient({ adapter });
TypeScript
import { PrismaClient } from "./path/to/generated/prisma";
import { PrismaBetterSqlite3 } from "@prisma/adapter-better-sqlite3";

const adapter = new PrismaBetterSqlite3({
  url: "file:./dev.db",
});

export const prisma = new PrismaClient({ adapter });
TypeScript
import { PrismaClient } from "./path/to/generated/prisma/edge";
import { PrismaPostgresAdapter } from "@prisma/adapter-ppg";

const adapter = new PrismaPostgresAdapter({
  connectionString: process.env.DATABASE_URL!,
});

export const prisma = new PrismaClient({ adapter });

[!WARNING] PrismaClient requires a driver adapter in Prisma 7. Calling new PrismaClient() without an adapter will result in an error.

Find out what driver adapter is needed for your database.

Your application should generally only create one instance of PrismaClient. How to achieve this depends on whether you are using Prisma ORM in a long-running application or in a serverless environment.

Creating multiple instances of PrismaClient will create multiple connection pools and can hit the connection limit for your database. Too many connections may start to slow down your database and eventually lead to errors such as:

Bash
Error in connector: Error querying the database: db error: FATAL: sorry, too many clients already
   at PrismaClientFetcher.request

Find out what driver adapter is needed for your database.

Your application should generally only create one instance of PrismaClient. How to achieve this depends on whether you are using Prisma ORM in a long-running application or in a serverless environment.

Creating multiple instances of PrismaClient will create multiple connection pools and can hit the connection limit for your database. Too many connections may start to slow down your database and eventually lead to errors such as:

Error in connector: Error querying the database: db error: FATAL: sorry, too many clients already

   at PrismaClientFetcher.request

Once you have instantiated PrismaClient, you can start sending queries in your code:

// run inside `async` function

const newUser = await prisma.user.create({

  data: {

    name: "Alice",

    email: "alice@prisma.io",

  },

});

const users = await prisma.user.findMany();

Whenever you make changes to your database that are reflected in the Prisma schema, you need to manually re-generate Prisma Client to update the generated code in your output directory:

bunx prisma generate
Bash
pnpm add prisma@prev --save-dev
pnpm add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3
Bash
yarn add prisma@prev --dev
yarn add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3
Bash
npm install prisma@prev --save-dev
npm install @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3

[!NOTE] Prisma 7 requires a driver adapter to connect to your database. Make sure your package.json includes "type": "module" for ESM support. See the upgrade guide for details.

Suggest an edit

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

Export
Documentation menu