# Introduction to Prisma Client (Prisma ORM v7) (/docs/orm/v7/prisma-client/setup-and-configuration/introduction) > For the complete Prisma documentation index, see [llms.txt](https://www.prisma.io/docs/llms.txt). A markdown version of any docs page is available by appending `.md` to its URL. Learn how to set up and configure Prisma Client in your project Location: ORM > v7 > Prisma Client > Setup and Configuration > 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](https://www.prisma.io/docs/v7/prisma-orm/quickstart/sqlite)**. [Quickstart (5 min)](https://www.prisma.io/docs/v7/prisma-orm/quickstart/sqlite) ## Prerequisites [#prerequisites] In order to set up Prisma Client, you need a Prisma Config and a [Prisma schema file](https://www.prisma.io/docs/orm/v7/prisma-schema/overview): #### Prisma Config ```ts title="prisma.config.ts" import 'dotenv/config'; import { defineConfig, env } from 'prisma/config'; export default defineConfig({ schema: 'prisma/schema.prisma', datasource: { url: env('DATABASE_URL'), }, }); ``` #### Prisma Schema ```prisma title="schema.prisma" 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? } ``` ## Installation [#installation] [Install the Prisma CLI](https://www.prisma.io/docs/orm/v7/reference/prisma-cli-reference), the Prisma Client library, and the [driver adapter](https://www.prisma.io/docs/orm/v7/core-concepts/supported-databases/database-drivers) for your database: #### PostgreSQL ```bash bun add prisma@prev --dev bun add @prisma/client@7 @prisma/adapter-pg pg ``` #### pnpm ```bash pnpm add prisma@prev --save-dev pnpm add @prisma/client@7 @prisma/adapter-pg pg ``` #### yarn ```bash yarn add prisma@prev --dev yarn add @prisma/client@7 @prisma/adapter-pg pg ``` #### npm ```bash npm install prisma@prev --save-dev npm install @prisma/client@7 @prisma/adapter-pg pg ``` #### MySQL / MariaDB ```bash bun add prisma@prev --dev bun add @prisma/client@7 @prisma/adapter-mariadb mariadb ``` #### pnpm ```bash pnpm add prisma@prev --save-dev pnpm add @prisma/client@7 @prisma/adapter-mariadb mariadb ``` #### yarn ```bash yarn add prisma@prev --dev yarn add @prisma/client@7 @prisma/adapter-mariadb mariadb ``` #### npm ```bash npm install prisma@prev --save-dev npm install @prisma/client@7 @prisma/adapter-mariadb mariadb ``` #### SQLite ```bash bun add prisma@prev --dev bun add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3 ``` #### pnpm ```bash pnpm add prisma@prev --save-dev pnpm add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3 ``` #### yarn ```bash yarn add prisma@prev --dev yarn add @prisma/client@7 @prisma/adapter-better-sqlite3 better-sqlite3 ``` #### npm ```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](https://www.prisma.io/docs/orm/v7/core-concepts/supported-databases/database-drivers) to connect to your database. Make sure your `package.json` includes `"type": "module"` for ESM support. See the [upgrade guide](https://www.prisma.io/docs/guides/upgrade-prisma-orm/v7) for details. ## Generate the Client API [#generate-the-client-api] Prisma Client is based on the models in Prisma Schema. To provide the correct types, you need generate the client code: #### bun ```bash bunx prisma generate ``` #### pnpm ```bash pnpm prisma generate ``` #### yarn ```bash yarn prisma generate ``` #### npm ```bash npx prisma generate ``` 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. ## Importing Prisma Client [#importing-prisma-client] With the client generated, import it along with your [driver adapter](https://www.prisma.io/docs/orm/v7/core-concepts/supported-databases/database-drivers) and create a new instance: #### PostgreSQL ```ts 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 }); ``` #### MySQL / MariaDB ```ts 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 }); ``` #### SQLite ```ts 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 }); ``` #### PostgreSQL (Edge) ```ts 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](https://www.prisma.io/docs/orm/v7/core-concepts/supported-databases/database-drivers) 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](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/databases-connections#prismaclient-in-long-running-applications) or in a [serverless environment](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/databases-connections#prismaclient-in-serverless-environments). 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 ``` ## Use Prisma Client to send queries to your database [#use-prisma-client-to-send-queries-to-your-database] Once you have instantiated `PrismaClient`, you can start sending queries in your code: ```ts // run inside `async` function const newUser = await prisma.user.create({ data: { name: "Alice", email: "alice@prisma.io", }, }); const users = await prisma.user.findMany(); ``` ## Evolving your application [#evolving-your-application] 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: #### bun ```bash bunx prisma generate ``` #### pnpm ```bash pnpm prisma generate ``` #### yarn ```bash yarn prisma generate ``` #### npm ```bash npx prisma generate ``` ## Related pages - [`Configuring error formatting`](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/error-formatting): This page explains how to configure the formatting of errors when using Prisma Client - [`Custom model and field names`](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/custom-model-and-field-names): Learn how you can decouple the naming of Prisma models from database tables to improve the ergonomics of the generated Prisma Client API - [`Database connections`](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/databases-connections): Learn how to manage database connections and configure connection pools - [`Database polyfills`](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/database-polyfills): Prisma Client provides features that are not achievable with relational databases. These features are referred to as "polyfills" and explained on this page. - [`Generating Prisma Client`](https://www.prisma.io/docs/orm/v7/prisma-client/setup-and-configuration/generating-prisma-client): Learn when and how to run prisma generate, configure the generator output, and import the generated client in your app.