跳至主要内容

将 Prisma Postgres 与 Drizzle ORM 配合使用

Drizzle ORM 是一个 TypeScript ORM。在本指南中,您将学习如何将 Drizzle ORM 连接到 Prisma Postgres

先决条件

  • Node.js 版本 16 或更高
  • TypeScript 版本 5.0 或更高

1. 创建新项目

为您的项目创建一个新目录并使用 npm 初始化它

mkdir drizzle-quickstart
cd drizzle-quickstart
npm init -y

安装 TypeScript 并初始化它

npm install --save-dev typescript
npx tsc --init

在您的 package.json 中,将 type 设置为 module

package.json
{
// ...
"type": "module"
// ...
}

2. 创建一个 Prisma Postgres 数据库

您可以使用 create-db CLI 工具创建 Prisma Postgres 数据库。按照以下步骤创建您的 Prisma Postgres 数据库

npx create-db

然后 CLI 工具应该输出

┌  🚀 Creating a Prisma Postgres database

│ Provisioning a temporary database in us-east-1...

│ It will be automatically deleted in 24 hours, but you can claim it.

◇ Database created successfully!


● Database Connection


│ Connection String:

│ postgresql://hostname:password@db.prisma.io:5432/postgres?sslmode=require


◆ Claim Your Database

│ Keep your database for free:

│ https://create-db.prisma.io/claim?CLAIM_CODE

│ Database will be deleted on 11/18/2025, 1:55:39 AM if not claimed.


创建一个 .env 文件并添加输出中的连接字符串

.env
DATABASE_URL="postgresql://hostname:password@db.prisma.io:5432/postgres?sslmode=require"
警告

切勿将 .env 文件提交到版本控制。.env 添加到您的 .gitignore 文件中以确保凭据安全。

创建的数据库是临时的,如果未声明,将在 24 小时内删除。声明会将数据库移至您的帐户。访问输出中的声明 URL 以保留您的数据库。

注意

要了解有关 create-db CLI 工具的更多信息,请参阅 create-db 文档

3. 安装依赖项

安装 Drizzle ORM 和 PostgreSQL 驱动程序

npm install drizzle-orm pg dotenv
npm install --save-dev drizzle-kit @types/pg tsx

包分解

  • drizzle-orm:轻量级 TypeScript ORM
  • pg:Node.js 的 PostgreSQL 驱动程序
  • dotenv:从 .env 文件加载环境变量
  • drizzle-kit:用于迁移和模式管理的 CLI 工具
  • @types/pg:pg 驱动程序的 TypeScript 类型定义
  • tsx:用于直接运行 .ts 文件的 TypeScript 执行引擎

4. 运行查询

创建一个 src/script.ts 文件

src/script.ts
import 'dotenv/config'
import { drizzle } from 'drizzle-orm/node-postgres'
import { Pool } from 'pg'

const pool = new Pool({
connectionString: process.env.DATABASE_URL,
})

const db = drizzle({ client: pool })

async function main() {
const result = await db.execute('select 1')
console.log('Query result:', result)
}

main()
.then(async () => {
await pool.end()
console.log('Connection closed')
})
.catch(async (error) => {
console.error('Error:', error)
await pool.end()
process.exit(1)
})

运行脚本

npx tsx src/script.ts

您应该收到类似于以下内容的输出

Query result: Result {
command: 'SELECT',
rowCount: 1,
oid: null,
rows: [ { '?column?': 1 } ],
fields: [
Field {
name: '?column?',
tableID: 0,
columnID: 0,
dataTypeID: 23,
dataTypeSize: 4,
dataTypeModifier: -1,
format: 'text'
}
],
_parsers: [ [Function: parseInteger] ],
_types: { getTypeParser: [Function: getTypeParser] },
RowCtor: null,
rowAsArray: false,
_prebuiltEmptyResultObject: { '?column?': null }
}
Connection closed

后续步骤

您已成功将 Drizzle ORM 连接到 Prisma Postgres!有关模式、迁移和查询等更高级功能,请参阅 Drizzle ORM 文档

© . This site is unofficial and not affiliated with Prisma Data, Inc.