Drizzle <> SQLite

Drizzle 通过 libsqlbetter-sqlite3 驱动程序原生支持 SQLite 连接。

在使用 libsqlbetter-sqlite3 驱动程序并将其与 Drizzle ORM 集成时,我们发现两者之间存在一些差异。例如

在驱动层面上,两者之间可能没有太大差异,但主要区别在于 libSQL 可以连接到 SQLite 文件和 Turso 远程数据库。LibSQL 是 SQLite 的一个分支,与标准 SQLite 相比,它提供更多功能,例如

libsql

步骤 1 - 安装包

npm
yarn
pnpm
bun
npm i drizzle-orm @libsql/client
npm i -D drizzle-kit

第 2 步 - 初始化驱动程序

Drizzle 原生支持所有 @libsql/client 驱动程序变体

@libsql/client默认为 node 导入,如果为打包器设置了 targetplatform(例如 esbuild --platform=browser),则自动更改为 web
@libsql/client/nodenode 兼容模块,支持 :memory:filewsshttpturso 连接协议
@libsql/client/web用于 nextnuxtastro 等全栈 Web 框架的模块
@libsql/client/http用于 httphttps 连接协议的模块
@libsql/client/ws用于 wswss 连接协议的模块
@libsql/client/sqlite3用于 :memory:file 连接协议的模块
@libsql/client-wasm用于 WASM 的独立实验包

默认
node
web
http
Web Sockets
wasm
import { drizzle } from 'drizzle-orm/libsql';

const db = drizzle({ connection: {
  url: process.env.DATABASE_URL, 
  authToken: process.env.DATABASE_AUTH_TOKEN 
}});

第 3 步 - 执行查询

libsql
带配置的 libsql
import { drizzle } from 'drizzle-orm/libsql';

const db = drizzle(process.env.DATABASE_URL);
 
const result = await db.execute('select 1');

如果您需要同步连接,可以使用我们额外的连接 API,您可以在其中指定驱动程序连接并将其传递给 Drizzle 实例。

import { drizzle } from 'drizzle-orm/libsql';
import { createClient } from '@libsql/client';

const client = createClient({ url: process.env.DATABASE_URL, authToken: process.env.DATABASE_AUTH_TOKEN });
const db = drizzle(client);

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

better-sqlite3

第 1 步 - 安装包

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

步骤 2 - 初始化驱动程序并执行查询

better-sqlite3
带配置的 better-sqlite3
import { drizzle } from 'drizzle-orm/better-sqlite3';

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

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

如果您需要提供现有驱动程序

import { drizzle } from 'drizzle-orm/better-sqlite3';
import Database from 'better-sqlite3';

const sqlite = new Database('sqlite.db');
const db = drizzle({ client: sqlite });

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

接下来是什么?