# 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.