SQL 데이터베이스 전반에서 테이블, 컬럼, 결과 타입을 자동 완성하는 타입 안전한 TypeScript SQL 쿼리 빌더입니다.
transact-rs/sqlx
일반 SQL로 작성한 쿼리를 컴파일 시점에 검사하는 순수 Rust 비동기 SQL 툴킷으로, PostgreSQL, MySQL/MariaDB, SQLite를 지원합니다.
- 스타
- 17,587
- 포크
- 1,750
- 열린 이슈
- 785
- 마지막 커밋
- 3시간 전
어떤 프로젝트인가요?
SQLx는 SQL 데이터베이스에 비동기 방식으로 연결하는 Rust 크레이트입니다. 쿼리 빌더나 DSL 대신 일반 SQL 문자열을 작성하면, 쿼리 매크로가 개발용 데이터베이스에 컴파일 시점 검증을 요청하므로 프로그램을 실행하기 전에 구문 및 타입 오류를 확인할 수 있습니다. ORM은 아니며, derive 매크로나 `query_as`를 사용해 행을 구조체에 매핑합니다.
이 크레이트는 커넥션 풀, 행 스트리밍, 준비된 문장 캐싱, 세이브포인트를 사용하는 트랜잭션, PostgreSQL의 LISTEN/NOTIFY 지원을 제공합니다. Postgres 및 MySQL/MariaDB 드라이버는 unsafe 코드를 사용하지 않는 순수 Rust로 구현되어 있고, SQLite 드라이버는 C SQLite 라이브러리를 감쌉니다. tokio 및 async-std 런타임과 native-tls 또는 rustls를 통한 TLS를 지원합니다.
`Any` 드라이버를 사용하면 연결 URL의 스킴에 따라 애플리케이션이 런타임에 데이터베이스 백엔드를 선택할 수 있습니다.
핵심 기능
- 01쿼리 빌더 DSL 없이 쿼리 매크로로 SQL 쿼리를 컴파일 시점에 검사합니다.
- 02커넥션 풀과 행 스트리밍을 기본 제공하는 비동기 API입니다.
- 03PostgreSQL, MySQL/MariaDB, SQLite를 지원합니다.
- 04커넥션별로 준비된 문장을 자동 캐싱합니다.
- 05세이브포인트를 사용하는 중첩 트랜잭션을 지원합니다.
- 06PostgreSQL에서 LISTEN/NOTIFY를 지원합니다.
- 07tokio 또는 async-std, native-tls 또는 rustls와 함께 사용할 수 있습니다.
활용 사례
- PostgreSQL 또는 MySQL을 백엔드로 사용하는 비동기 Rust 웹 서비스를 구축할 때
- 직접 SQL을 세밀하게 작성하면서 빌드 시 스키마 불일치를 찾아낼 때
- Rust 애플리케이션에 SQLite를 임베딩하고 비동기로 접근할 때
- 런타임에 URL을 기준으로 드라이버를 선택하는 데이터베이스 비종속 도구를 만들 때
빠른 시작
- 1
Cargo.toml에 sqlx를 추가하고 런타임 기능(runtime-tokio 또는 runtime-async-std)과 필요에 따라 TLS 기능을 지정합니다
- 2
sqlx의 features 목록에서 필요한 데이터베이스 드라이버(postgres, mysql 또는 sqlite)를 활성화합니다
- 3
PgPoolOptions(또는 해당 풀 타입)으로 연결 풀을 만들고 Quickstart에 나온 대로 쿼리를 실행합니다
사용 전 알아둘 점
- SQLite 드라이버는 C 라이브러리 libsqlite3에 의존하며 unsafe 코드를 사용하므로 순수 Rust 구현이 아닙니다.
- 컴파일 시 검증되는 쿼리 매크로를 사용하려면 오프라인 모드를 사용하지 않는 한 빌드 시 개발용 데이터베이스가 필요합니다.
- MSSQL 드라이버는 버전 0.7 이후 제거되었으며 현재 지원되지 않습니다.
토픽
자주 묻는 질문
- sqlx은(는) 무엇인가요?
- 일반 SQL로 작성한 쿼리를 컴파일 시점에 검사하는 순수 Rust 비동기 SQL 툴킷으로, PostgreSQL, MySQL/MariaDB, SQLite를 지원합니다. SQLx는 SQL 데이터베이스에 비동기 방식으로 연결하는 Rust 크레이트입니다. 쿼리 빌더나 DSL 대신 일반 SQL 문자열을 작성하면, 쿼리 매크로가 개발용 데이터베이스에 컴파일 시점 검증을 요청하므로 프로그램을 실행하기 전에 구문 및 타입 오류를 확인할 수 있습니다. ORM은 아니며, derive 매크로나 `query_as`를 사용해 행을 구조체에 매핑합니다.
- sqlx은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- sqlx은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- sqlx은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. sqlx의 마지막 커밋은 2026년 10월 21일입니다.
- sqlx은(는) 어디에 사용할 수 있나요?
- PostgreSQL 또는 MySQL을 백엔드로 사용하는 비동기 Rust 웹 서비스를 구축할 때 직접 SQL을 세밀하게 작성하면서 빌드 시 스키마 불일치를 찾아낼 때 Rust 애플리케이션에 SQLite를 임베딩하고 비동기로 접근할 때 런타임에 URL을 기준으로 드라이버를 선택하는 데이터베이스 비종속 도구를 만들 때
- sqlx는 어떻게 설치하나요?
- Cargo.toml에 sqlx를 추가하고 런타임 기능(runtime-tokio 또는 runtime-async-std)과 필요에 따라 TLS 기능을 지정합니다 sqlx의 features 목록에서 필요한 데이터베이스 드라이버(postgres, mysql 또는 sqlite)를 활성화합니다 PgPoolOptions(또는 해당 풀 타입)으로 연결 풀을 만들고 Quickstart에 나온 대로 쿼리를 실행합니다
- sqlx은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/transact-rs/sqlx
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
PostgreSQL, MySQL, SQLite, MariaDB에서 컴파일 시점에 쿼리를 검사하는 안전하고 확장 가능한 Rust ORM 및 쿼리 빌더입니다.
Node.js, Bun, Deno 및 엣지 런타임에서 사용할 수 있는 PostgreSQL, MySQL, SQLite용 경량 헤드리스 TypeScript ORM입니다.
PostgreSQL, MySQL, MariaDB, SQLite, MS SQL Server, Snowflake, Oracle, Db2를 지원하는 promise 기반 Node.js 및 TypeScript ORM입니다.
Linux, macOS, Windows에서 MySQL, PostgreSQL, SQLite, SQL Server 등 다양한 DB를 지원하는 크로스 플랫폼 SQL 편집기 및 데이터베이스 관리자입니다.
SQL 쿼리를 읽고 타입 안전한 Go, Kotlin, Python, TypeScript 코드를 생성하는 SQL 컴파일러입니다.