Alternatively, you can generate migrations using the drizzle-kit generate
command and then apply them using the drizzle-kit migrate
command:
Generate migrations:
Apply migrations:
Read more about migration process in documentation.
Drizzle has native support for Neon connections with the neon-http
and neon-websockets
drivers. These use the neon-serverless driver under the hood.
With the neon-http
and neon-websockets
drivers, you can access a Neon database from serverless environments over HTTP or WebSockets instead of TCP. Querying over HTTP is faster for single, non-interactive transactions.
If you need session or interactive transaction support, or a fully compatible drop-in replacement for the pg
driver, you can use the WebSocket-based neon-serverless
driver. You can connect to a Neon database directly using Postgres
This is the basic file structure of the project. In the src/db
directory, we have table definition in schema.ts
. In drizzle
folder there are sql migration file and snapshots.
Create a .env
file in the root of your project and add your database connection variable:
Create a index.ts
file in the src/db
directory and initialize the connection:
If you need a synchronous connection, you can use our additional connection API, where you specify a driver connection and pass it to the Drizzle instance.
Create a schema.ts
file in the src/db
directory and declare your table:
Drizzle config - a configuration file that is used by Drizzle Kit and contains all the information about your database connection, migration folder and schema files.
Create a drizzle.config.ts
file in the root of your project and add the following content:
You can directly apply changes to your database using the drizzle-kit push
command. This is a convenient method for quickly testing new schema designs or modifications in a local development environment, allowing for rapid iterations without the need to manage migration files:
Read more about the push command in documentation.
Alternatively, you can generate migrations using the drizzle-kit generate
command and then apply them using the drizzle-kit migrate
command:
Generate migrations:
Apply migrations:
Read more about migration process in documentation.
Let’s update the src/index.ts
file with queries to create, read, update, and delete users
To run any TypeScript files, you have several options, but let’s stick with one: using tsx
You’ve already installed tsx
, so we can run our queries now
Run index.ts
script
We suggest using bun
to run TypeScript files. With bun
, such scripts can be executed without issues or additional
settings, regardless of whether your project is configured with CommonJS (CJS), ECMAScript Modules (ESM), or any other module format.
To run a script with bun
, use the following command:
If you don’t have bun installed, check the Bun installation docs