Repolode
transact-rs

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. 1

    Cargo.toml에 sqlx를 추가하고 런타임 기능(runtime-tokio 또는 runtime-async-std)과 필요에 따라 TLS 기능을 지정합니다

  2. 2

    sqlx의 features 목록에서 필요한 데이터베이스 드라이버(postgres, mysql 또는 sqlite)를 활성화합니다

  3. 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 통계는 매일 갱신됩니다.

관련 프로젝트