Drizzle <> SQLite
Drizzle 原生支持使用 libsql、node:sqlite 和 better-sqlite3 驱动程序连接 SQLite。
在使用这两种驱动程序并将它们与 Drizzle ORM 集成时,我们发现它们之间有一些差异。例如:
At the driver level, there may not be much difference between the two, but the main distinction is that libSQL can connect to SQLite files and Turso remote databases. LibSQL is a branch of SQLite that offers more features than standard SQLite, such as:
libSQL驱动程序支持更多的 ALTER 语句,使您能够比仅使用better-sqlite3更轻松地管理您的模式。- 您可以原生配置静态加密功能。
libSQL还支持 SQLite 数据库支持的大量扩展。
libsql
第一步 - 安装包
npm
yarn
pnpm
bun
npm i drizzle-orm@rc @libsql/client
npm i -D drizzle-kit@rc
第二步 - 初始化驱动程序并执行查询
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
}});第三步 - 进行查询
libsql
libsql with config
import { drizzle } from 'drizzle-orm/libsql';
const db = drizzle(process.env.DATABASE_URL);
const result = await db.all('select 1');如果你需要同步连接,可以使用我们的额外连接 API, 在该 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.all('select 1');node:sqlite
第 1 步 - 安装包
npm
yarn
pnpm
bun
npm i drizzle-orm@rc
npm i -D drizzle-kit@rc
第 2 步 - 初始化驱动并执行查询
node:sqlite
node:sqlite with config
import { drizzle } from 'drizzle-orm/node-sqlite';
const db = drizzle(process.env.DB_FILE_NAME);
const result = await db.execute('select 1');如果您需要提供现有的驱动程序:
import { drizzle } from 'drizzle-orm/node-sqlite';
import { DatabaseSync } from 'node:sqlite';
const sqlite = new DatabaseSync('sqlite.db');
const db = drizzle({ client: sqlite });
const result = await db.execute('select 1');better-sqlite3
第一步 - 安装包
npm
yarn
pnpm
bun
npm i drizzle-orm@rc better-sqlite3
npm i -D drizzle-kit@rc @types/better-sqlite3
第二步 - 初始化驱动程序并执行查询
better-sqlite3
better-sqlite3 配置版
import { drizzle } from 'drizzle-orm/better-sqlite3';
const db = drizzle(process.env.DB_FILE_NAME);
const result = await db.all('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.all('select 1');下一步是什么?
Manage schema
Query data