Relational databases
Learn how to add Prisma ORM to an existing Node.js or TypeScript project by connecting it to your database and generating a Prisma Client for database access. The following tutorial introduces you to the Prisma CLI, Prisma Client, and Prisma Introspection.
If you're migrating to Prisma ORM from another ORM, see our Migrate from TypeORM or Migrate from Sequelize migration guides.
Prerequisites
In order to successfully complete this guide, you need:
- an existing Node.js project with a
package.json
- Node.js installed on your machine (see system requirements for officially supported versions)
- a PostgreSQL database server running and a database with at least one table
See System requirements for exact version requirements.
Make sure you have your database connection URL (that includes your authentication credentials) at hand! If you don't have a database server running and just want to explore Prisma ORM, check out the Quickstart.
Set up Prisma ORM
As a first step, navigate into your project directory that contains the package.json
file.
Next, add the Prisma CLI as a development dependency to your project:
npm install prisma --save-dev
If your project contains multiple directories with package.json
files (e.g., frontend
, backend
, etc.), note that Prisma ORM is specifically designed for use in the API/backend layer. To set up Prisma, navigate to the appropriate backend directory containing the relevant package.json
file and configure Prisma there.
You can now invoke the Prisma CLI by prefixing it with npx
:
npx prisma
See installation instructions to learn how to install Prisma ORM using a different package manager.
Next, set up your Prisma ORM project by creating your Prisma Schema file with the following command:
npx prisma init --datasource-provider postgresql --output ../generated/prisma
This command does a few things:
- Creates a new directory called
prisma
that contains a file calledschema.prisma
, which contains the Prisma Schema with your database connection variable and schema models. - Sets the
datasource
to PostgreSQL and the output to a custom location, respectively. - Creates the
.env
file in the root directory of the project, which is used for defining environment variables (such as your database connection)
If you're using version control, like git, we recommend you add a line to your .gitignore
in order to exclude the generated client from your application. In this example, we want to exclude the generated/prisma
directory.
generated/prisma/
Note that the default schema created by prisma init
uses PostgreSQL as the provider
. If you didn't specify a provider with the datasource-provider
option, you need to edit the datasource
block to use the postgresql
provider instead:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}