Using Drizzle with Xata's Postgres service

Get started with Drizzle ORM and Xata

Written by

Alexis Rico

Published on

March 20, 2024

Drizzle ORM is a very popular TypeScript ORM that provides type safe access to your database, automated migrations, and a custom data model definition.

With this week's beta release of Xata's Postgres service you are now able to connect to your Xata database with Drizzle over the Postgres wire protocol too with the drizzle-orm/node-postgres or drizzle-orm/postgres-js drivers.

Also, we are excited to announce that we have added support for the drizzle-orm/xata-http driver. This driver allows you to connect to your Xata database using the Xata HTTP API. This is a great option if you are using Drizzle in a serverless environment or if you are using a language that does not have a native Postgres driver.

#

Setting up with Xata

Before starting you will need an empty Xata database that has direct access to Postgres enabled.

You will first need to enable direct access to Postgres in your workspace settings.

Enable direct access for your workspace
Enable direct access for your workspace

You will also need to enable direct access to Postgres when you create your new database.

Enable direct access for your database
Enable direct access for your database

After this point you will want to update your Xata SDK to the next release to ensure you have the latest beta features.

$ npm install @xata.io/client@next # yarn install or pnpm install

There are two ways to set up Drizzle: using the native Postgres adapters or the Xata HTTP adapter.

To use Drizzle with the node-postgres driver, you will need to install the drizzle-orm and pg packages.

$ npm install drizzle-orm pg # yarn install or pnpm install

After that, you can use Drizzle as you normally would, but with the node-postgres driver.

import { drizzle } from 'drizzle-orm/node-postgres';
import { getXataClient } from './xata'; // Generated client
import { Client } from 'pg';

const xata = getXataClient();
const client = new Client({ connectionString: xata.sql.connectionString });
const db = drizzle(client);

To use Drizzle with the postgres-js driver, you will need to install the drizzle-orm and postgres-js packages.

$ npm install drizzle-orm postgres # yarn install or pnpm install

After that, you can use Drizzle as you normally would, but with the postgres-js driver.

import { drizzle } from 'drizzle-orm/postgres-js';
import { getXataClient } from './xata'; // Generated client
import postgres from 'postgres';

const xata = getXataClient();
const client = postgres(xata.sql.connectionString);
const db = drizzle(queryClient);

To use Drizzle with the xata-http driver, you will need to install the drizzle-orm package.

$ npm install drizzle-orm # yarn install or pnpm install

After that, you can use Drizzle as you normally would, but with the xata-http driver.

import { drizzle } from 'drizzle-orm/xata-http';
import { getXataClient } from './xata'; // Generated client

const xata = getXataClient();
const db = drizzle(xata);

And that's it, it's that easy to connect Drizzle to your Xata database. This functionality is currently only available with the public beta of our Postgres service.

Sign up today to get started! We're always around if you have any questions. Pop into Discord and say hi or reach out on X | Twitter. Happy building 🦋

Start free,
pay as you grow

Xata provides the best free plan in the industry. It is production ready by default and doesn't pause or cool-down. Take your time to build your business and upgrade when you're ready to scale.

Free plan includes
  • 10 database branches
  • High availability
  • 15 GB data storage
  • 15 GB search engine storage
  • 2 GB file attachments
  • 250 AI queries per month
Start freeExplore all plans
Free plan includes
  • 10 database branches
  • High availability
  • 15 GB data storage
  • 15 GB search engine storage
  • 2 GB file attachments
  • 250 AI queries per month
Add column to table

Copyright © 2024 Xatabase Inc.
All rights reserved.

Product

RoadmapFeature requestsPricingStatusAI solutionsFile attachments