# @drizzle-adapter/core 中文文档

规范地址：https://npmcn.com/package/%40drizzle-adapter/core/

版本：1\.1\.1
npm 元数据更新时间：2026-03-25T23:39:59.907Z
中文译文更新时间：2026-11-12T20:15:11.240Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40drizzle-adapter/core
原文对照：https://npmcn.com/package/%40drizzle-adapter/core/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：70.4 kB，84 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2024-12-03T05:39:03.042Z
- 最新版本发布：2026-03-25T23:39:59.743Z
- 近 30 天下载量：20462（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：16（近 12 个月 2 个）

## 中文简介

用于 Drizzle ORM 的 TypeScript- First Object 定向适配器层,提供跨越不同数据库驱动器的统一接口.

## 安装

```sh
npm install @drizzle-adapter/core
```

也可以使用：`pnpm add @drizzle-adapter/core`、`yarn add @drizzle-adapter/core`、`bun add @drizzle-adapter/core`

## README

# @ 细雨适应器/ 核心

用于 Drizzle ORM 的 TypeScript- First Object 定向适配器层,提供跨越不同数据库驱动器的统一接口.

## 概览

这个 `@drizzle-adapter/core` 软件包充当了Drizzle ORM之上的抽象层,提供了一个统一接口,在不同的数据库驱动器之间一致工作。 这个抽象值允许您写出数据库不可知代码,可以不作修改地与任何支持的数据库系统工作.

关键的概念是,虽然Drizzle ORM中不同的数据库驱动程序可能提供不同的特性和稍有不同的API,但这个适配器层使这些差异正常化,确保您的代码在不同的数据库系统之间保持可移植性.

## 关键特性

-   **统一接口**: 一次写出您的数据库代码并在不同的数据库之间切换,而不更改您的应用程序代码
-   **类型安全**: 完整类型脚本支持并严格打字
-   **依赖性注射准备**: 具有适合依赖性注射的接口的清洁建筑
-   **驱动数据**: 支持多个数据库驱动程序,包括 MySQL, PostgreSQL, SQLite等
-   **一致 API**: 不同数据库系统的接口标准化
-   **自动加载驱动程序**: 自动加载和配置相应驱动程序的工厂模式

## 安装

```bash
pnpm install @drizzle-adapter/core
```

加您要使用的驱动程序专用软件包 :

```bash
pnpm install @drizzle-adapter/mysql2 # for MySQL
# or
pnpm install @drizzle-adapter/node-postgres # for PostgreSQL
# or
pnpm install @drizzle-adapter/libsql # for SQLite
# etc.
```

## 使用量

1.  配置您的数据库连接 :

```typescript
import { TypeDrizzleDatabaseConfig } from '@drizzle-adapter/core';

const config: TypeDrizzleDatabaseConfig = {
  DATABASE_DRIVER: 'mysql2', // or 'node-postgres', 'libsql', etc.
  DATABASE_URL: process.env.DATABASE_URL
};
```

2.  使用核心工厂创建适配器实例 :

```typescript
import { DrizzleAdapterFactory } from '@drizzle-adapter/core';

// The factory automatically loads the appropriate driver
const factory = new DrizzleAdapterFactory();
const adapter = factory.create(config);
```

3.  定义您的方案 :

```typescript
// The data types are abstracted, so this works with any database
const dataTypes = adapter.getDataTypes();

const users = dataTypes.dbTable('users', {
  id: dataTypes.dbSerial('id').primaryKey(),
  name: dataTypes.dbText('name').notNull(),
  email: dataTypes.dbText('email').notNull(),
  createdAt: dataTypes.dbTimestamp('created_at').defaultNow()
});
```

4.  数据库操作使用适配器 :

```typescript
import { eq } from 'drizzle-orm';

// Connect to the database (works the same for any driver)
const connection = await adapter.getConnection();

// Get the database client
const client = connection.getClient();

try {
  // All these operations work consistently across different databases
  
  // Insert
  await client.insert(users).values({
    name: 'John Doe',
    email: 'john@example.com'
  });

  // Query
  const user = await client
    .select()
    .from(users)
    .where(eq(users.email, 'john@example.com'))
    .limit(1);

  // Update
  await client
    .update(users)
    .set({ name: 'John Smith' })
    .where(eq(users.email, 'john@example.com'));

  // Delete
  await client
    .delete(users)
    .where(eq(users.email, 'john@example.com'));

} finally {
  // Always disconnect
  await connection.disconnect();
}
```

5.  示例存储模式( Database Agnostic) :

```typescript
import { DrizzleAdapterInterface, DrizzleClientInterface } from '@drizzle-adapter/core';
import { eq } from 'drizzle-orm';

interface User {
  id: number;
  name: string;
  email: string;
}

class UserRepository {
  private client: DrizzleClientInterface;
  private users: any; // Your users table schema

  constructor(private adapter: DrizzleAdapterInterface) {
    // Schema definition works the same regardless of the database
    const dataTypes = adapter.getDataTypes();
    this.users = dataTypes.dbTable('users', {
      id: dataTypes.dbSerial('id').primaryKey(),
      name: dataTypes.dbText('name').notNull(),
      email: dataTypes.dbText('email').notNull()
    });
  }

  async connect(): Promise<void> {
    const connection = await this.adapter.getConnection();
    this.client = connection.getClient();
  }

  async disconnect(): Promise<void> {
    await this.adapter.getConnection().disconnect();
  }

  async findById(id: number): Promise<User | null> {
    const result = await this.client
      .select()
      .from(this.users)
      .where(eq(this.users.id, id))
      .limit(1);
    
    return result[0] || null;
  }

  async create(user: Omit<User, 'id'>): Promise<User> {
    const result = await this.client
      .insert(this.users)
      .values(user)
      .returning();
    
    return result[0];
  }

  async update(id: number, data: Partial<Omit<User, 'id'>>): Promise<User | null> {
    const result = await this.client
      .update(this.users)
      .set(data)
      .where(eq(this.users.id, id))
      .returning();
    
    return result[0] || null;
  }

  async delete(id: number): Promise<void> {
    await this.client
      .delete(this.users)
      .where(eq(this.users.id, id));
  }
}

// Usage example (works with any database):
async function main() {
  const factory = new DrizzleAdapterFactory();
  
  // MySQL configuration
  const mysqlAdapter = factory.create({
    DATABASE_DRIVER: 'mysql2',
    DATABASE_URL: process.env.MYSQL_URL
  });

  // PostgreSQL configuration
  const pgAdapter = factory.create({
    DATABASE_DRIVER: 'node-postgres',
    DATABASE_URL: process.env.POSTGRES_URL
  });

  // The same repository works with any adapter
  const mysqlRepo = new UserRepository(mysqlAdapter);
  const pgRepo = new UserRepository(pgAdapter);

  // Use either repository - the code is exactly the same
  await mysqlRepo.connect();
  try {
    const user = await mysqlRepo.create({
      name: 'John Doe',
      email: 'john@example.com'
    });
  } finally {
    await mysqlRepo.disconnect();
  }
}
```

## 滴答音响

这个 `DrizzleAdapterSingleton` class 执行 Singleton 设计模式,确保只使用一个实例 `DrizzleAdapterInterface` 可以存在。 这对管理整个应用程序的单个适配器实例很有用 .

### 方法

-   **静态( 静态 : DrizzleAdapter Interface QQ 未定义)**:设置适配器的单通实例.
-   **获取Instance ()**: 返回适配器的单通实例。 如果实例未设定, 则丢出错误 .

### 用法示例

```typescript
import { DrizzleAdapterSingleton } from '@drizzle-adapter/core';
import type { DrizzleAdapterInterface } from '@drizzle-adapter/core';

// Setting the instance
DrizzleAdapterSingleton.setInstance(myAdapter);

// Getting the instance
const adapter = DrizzleAdapterSingleton.getInstance();
```

### 使用大小写

-   **全球接入**: 使用 `DrizzleAdapterSingleton` 当您需要整个应用程序中全球可访问的适配器实例时.
-   **配置管理**: 应用程序初始化期间设置适配器实例一次, 从代码库的任意位置访问, 而不绕过它 .

## 支持的驱动程序

Drizzle适应器生态系统包括下列适应器:

-   MySQL (英语:`@drizzle-adapter/mysql2`(中文(简体) )
-   PostgreSQL (英语:`@drizzle-adapter/node-postgres`, (中文(简体) ), `@drizzle-adapter/postgres-js`(中文(简体) )
-   SQLite (% 1 ) (`@drizzle-adapter/libsql`(中文(简体) )
-   云花板 D1 (英语)`@drizzle-adapter/d1`(中文(简体) )
-   神经元( Neon)`@drizzle-adapter/neon-http`(中文(简体) )
-   TiDB (`@drizzle-adapter/tidb-serverless`(中文(简体) )
-   PGLite (英语:`@drizzle-adapter/pglite`(中文(简体) )

## 捐款

欢迎捐款! 这就是你能帮助:

1.  叉子存储器
2.  创建您的特性分支( E)`git checkout -b feature/amazing-feature`(中文(简体) )
3.  提交更改( E)`git commit -m 'Add some amazing feature'`(中文(简体) )
4.  推向分行(`git push origin feature/amazing-feature`(中文(简体) )
5.  打开拉请求

## 相关软件包

-   [@ 细雨适应器/ mysql2](https://npmcn.com/package/%40drizzle-adapter/mysql2)
-   [@ 细雨- 适应器/ 节点- 张贴](https://npmcn.com/package/%40drizzle-adapter/node-postgres)
-   [@ 细雨适应器/ postgres-js](https://npmcn.com/package/%40drizzle-adapter/postgres-js)
-   [@ rizzle- adapter/ libsql (小雨)](https://npmcn.com/package/%40drizzle-adapter/libsql)
-   [@ 细雨适应器/ d1](https://npmcn.com/package/%40drizzle-adapter/d1)
-   [@ rizzle- adapter/ neon- http](https://npmcn.com/package/%40drizzle-adapter/neon-http)
-   [@ 细雨适应器/ tidb- server](https://npmcn.com/package/%40drizzle-adapter/tidb-serverless)
-   [@ 细雨适应器/ pglite](https://npmcn.com/package/%40drizzle-adapter/pglite)

## 常见问题

### @drizzle-adapter/core 是什么？

用于 Drizzle ORM 的 TypeScript- First Object 定向适配器层,提供跨越不同数据库驱动器的统一接口\.

### 如何安装 @drizzle-adapter/core？

在项目目录运行 npm install @drizzle-adapter/core，或使用 pnpm add / yarn add / bun add。

### @drizzle-adapter/core 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @drizzle-adapter/core 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @drizzle-adapter/core 可以商用吗？

@drizzle-adapter/core 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @drizzle-adapter/core 的下载量有多少？

根据 npm 官方下载统计，@drizzle-adapter/core 在 2026/10/13 – 2026/11/11 这 30 天内被下载 20,462 次，日均约 682 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @drizzle-adapter/core 还在维护吗？

最新版本 1\.1\.1 发布于 2026/03/26（7 个月前）；至今共发布 16 个版本，其中过去 12 个月发布了 2 个；首次发布于 2024/12/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

