Drizzle <> Turso
This guide assumes familiarity with:
**공식 웹사이트**에 따르면, Turso는 libSQL 기반의 에지 SQLite 데이터베이스 서비스입니다.
Drizzle ORM은 libSQL 드라이버를 기본적으로 지원하며, SQL 방언과 방언별 드라이버 및 문법을 수용합니다. 또한 SQLite와 유사한 all
, get
, values
, run
쿼리 메서드 문법을 대부분 반영합니다.
1단계 - 패키지 설치
npm
yarn
pnpm
bun
npm i drizzle-orm @libsql/client
npm i -D drizzle-kit
위 명령어를 사용하여 필요한 패키지를 설치합니다. drizzle-orm
과 @libsql/client
는 프로젝트에 필수적인 패키지이며, drizzle-kit
은 개발 환경에서만 사용하는 개발 의존성 패키지입니다.
2단계 - 드라이버 초기화
Drizzle은 모든 @libsql/client
드라이버 변형을 기본적으로 지원합니다.
@libsql/client | 기본적으로 node 모듈로 임포트되며, 번들러에서 target 이나 platform 이 설정되면 자동으로 web 모듈로 변경됩니다. 예를 들어, esbuild --platform=browser 와 같은 설정이 적용됩니다. |
@libsql/client/node | node 호환 모듈로, :memory: , file , wss , http , turso 연결 프로토콜을 지원합니다. |
@libsql/client/web | next , nuxt , astro 와 같은 풀스택 웹 프레임워크를 위한 모듈입니다. |
@libsql/client/http | http 및 https 연결 프로토콜을 위한 모듈입니다. |
@libsql/client/ws | ws 및 wss 연결 프로토콜을 위한 모듈입니다. |
@libsql/client/sqlite3 | :memory: 및 file 연결 프로토콜을 위한 모듈입니다. |
@libsql/client-wasm | WASM을 위한 별도의 실험적 패키지입니다. |
기본
Node
웹
HTTP
웹 소켓
WASM
import { drizzle } from 'drizzle-orm/libsql';
const db = drizzle({ connection: {
url: process.env.DATABASE_URL,
authToken: process.env.DATABASE_AUTH_TOKEN
}});
기존 드라이버를 제공해야 하는 경우:
default
web
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.select().from(users).all()
3단계 - 쿼리 만들기
import { drizzle } from 'drizzle-orm/libsql';
import * as s from 'drizzle-orm/sqlite-core';
// 데이터베이스 연결 설정
const db = drizzle({
connection: {
url: process.env.DATABASE_URL,
authToken: process.env.DATABASE_AUTH_TOKEN
}
});
// users 테이블 정의
const users = s.sqliteTable("users", {
id: s.integer(),
name: s.text(),
});
// users 테이블에서 데이터 조회
const result = await db.select().from(users);