将 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 ORMpg: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 文档。