Drizzle <> PlanetScale Postgres

本指南假定您已熟悉:

PlanetScale 同时提供 MySQL(Vitess)和 PostgreSQL 数据库。本页介绍如何连接到 PlanetScale Postgres。

对于 PlanetScale MySQL,请参见PlanetScale MySQL 连接指南

使用 Drizzle ORM,您可以通过以下方式连接 PlanetScale Postgres:

有关创建 PlanetScale Postgres 数据库及获取凭据的详细说明,请参阅PlanetScale Postgres 文档

node-postgres

第 1 步 - 安装依赖包

npm
yarn
pnpm
bun
npm i drizzle-orm pg -D drizzle-kit @types/pg

第 2 步 - 初始化驱动并执行查询

连接 URL
使用配置
使用已存在客户端
import { drizzle } from 'drizzle-orm/node-postgres';

const db = drizzle(process.env.DATABASE_URL);

const result = await db.execute('select 1');

Neon 无服务器驱动

PlanetScale Postgres 也支持通过Neon 无服务器驱动连接。这是针对 Vercel Functions、Cloudflare Workers 或 AWS Lambda 等无服务器环境的不错选择。

该驱动支持两种模式:

第 1 步 - 安装依赖包

npm
yarn
pnpm
bun
npm i drizzle-orm @neondatabase/serverless -D drizzle-kit

第 2 步 - 初始化驱动并执行查询

Neon HTTP
Neon WebSockets
import { neon, neonConfig } from '@neondatabase/serverless';
import { drizzle } from 'drizzle-orm/neon-http';

// PlanetScale Postgres 连接所需
neonConfig.fetchEndpoint = (host) => `https://${host}/sql`;

const sql = neon(process.env.DATABASE_URL!);
const db = drizzle({ client: sql });

const result = await db.execute('select 1');
连接 URL 格式
postgresql://{用户名}:{密码}@{主机}:{端口}/postgres?sslmode=verify-full
连接端口

PlanetScale Postgres 支持两个连接端口:

5432:直接连接到 PostgreSQL。连接总数受您的集群 max_connections 设置限制。

6432:通过 PgBouncer 连接以实现连接池。推荐在存在大量并发连接时使用。

接下来?