Drizzle <> SQLite
Drizzle 原生支持与 libsql
和 better-sqlite3
驱动程序的 SQLite 连接。
我们在使用 libsql
和 better-sqlite3
驱动程序并将它们与 Drizzle ORM 集成时发现了它们之间的一些差异。例如:
在驱动程序级别,两者之间可能没有太多区别,但主要区别在于 libSQL
可以连接到 SQLite 文件和 Turso
远程数据库。LibSQL 是 SQLite 的一个分支,与标准 SQLite 相比,它提供了更多功能,例如:
-
libSQL
驱动程序提供更多 ALTER 语句,让你比仅使用better-sqlite3
更轻松地管理架构。 -
你可以原生配置静态加密功能。
-
SQLite 数据库支持的大量扩展也由
libSQL
支持。
libsql
步骤 1 - 安装软件包
npm
yarn
pnpm
bun
npm i drizzle-orm @libsql/client -D drizzle-kit
步骤 2 - 初始化驱动程序
Drizzle 原生支持所有 @libsql/client 驱动程序变体:
@libsql/client | defaults to node import, automatically changes to web if target or platform is set for bundler, e.g. esbuild --platform=browser |
@libsql/client/node | node compatible module, supports :memory: , file , wss , http and turso connection protocols |
@libsql/client/web | module for fullstack web frameworks like next , nuxt , astro , etc. |
@libsql/client/http | module for http and https connection protocols |
@libsql/client/ws | module for ws and wss connection protocols |
@libsql/client/sqlite3 | module for :memory: and file connection protocols |
@libsql/client-wasm | Separate experimental package for WASM |
default
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 with config
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 -D drizzle-kit @types/better-sqlite3
步骤 2 - 初始化驱动程序并进行查询
better-sqlite3
better-sqlite3 with config
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');