Become a Gold Sponsor

与 Drizzle 的数据库连接

Drizzle ORM 通过 数据库驱动 在您的数据库上运行 SQL 查询。

index.ts
schema.ts
import { drizzle } from "drizzle-orm/node-postgres"
import { users } from "./schema"

const db = drizzle(process.env.DATABASE_URL);
const usersCount = await db.$count(users);
                        ┌──────────────────────┐
                        │   db.$count(users)   │ <--- drizzle 查询
                        └──────────────────────┘     
                            │               ʌ
select count(*) from users -│               │
                            │               │- [{ count: 0 }]
                            v               │
                         ┌─────────────────────┐
                         │    node-postgres    │ <--- 数据库驱动
                         └─────────────────────┘
                            │               ʌ
01101000 01100101 01111001 -│               │
                            │               │- 01110011 01110101 01110000
                            v               │
                         ┌────────────────────┐
                         │      数据库        │ 
                         └────────────────────┘

在后台,Drizzle 会创建一个 node-postgres 驱动实例,如果需要,您可以通过 db.$client 访问它。

import { drizzle } from "drizzle-orm/node-postgres"

const db = drizzle(process.env.DATABASE_URL);
const pool = db.$client;
// 以上代码等价于
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 });

Drizzle 的设计使其与每一种 边缘无服务器 运行时本地兼容,无论何时您需要访问无服务器数据库 - 我们都会为您提供支持。

Neon HTTP
Neon with websockets
Vercel Postgres
PlanetScale HTTP
Cloudflare d1
import { drizzle } from "drizzle-orm/neon-http";

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

确实,我们支持特定于运行时的驱动程序,如 Bun SQLiteExpo SQLite

import { drizzle } from "drizzle-orm/bun-sqlite"

const db = drizzle(); // <--- will create an in-memory db
const db = drizzle("./sqlite.db");
import { drizzle } from "drizzle-orm/expo-sqlite";
import { openDatabaseSync } from "expo-sqlite/next";

const expo = openDatabaseSync("db.db");
const db = drizzle(expo);

数据库连接 URL

以防您对数据库连接 URL 概念不熟悉

postgresql://alex:AbC123dEf@ep-cool-darkness-123456.us-east-2.aws.neon.tech/dbname
             └──┘ └───────┘ └─────────────────────────────────────────────┘ └────┘
              ʌ    ʌ          ʌ                                              ʌ
        角色 -│    │          │- 主机名                                    │- 数据库

                   │- 密码

下一步

欢迎查看每个驱动程序的文档