# SQLX - 러스트 기반 SQL 툴킷 오픈소스

> Clean Markdown view of GeekNews topic #22323. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=22323](https://news.hada.io/topic?id=22323)
- GeekNews Markdown: [https://news.hada.io/topic/22323.md](https://news.hada.io/topic/22323.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-08-04T09:46:02+09:00
- Updated: 2025-08-04T09:46:02+09:00
- Original source: [github.com/launchbadge](https://github.com/launchbadge/sqlx)
- Points: 14
- Comments: 6

## Summary

Rust 생태계에서 **ORM 없이 직접 SQL을 사용**하려는 프로젝트에 적합한 오픈소스 툴킷으로, **컴파일 타임 쿼리 검증**을 매크로로 구현해 형 안전성과 개발 효율성을 높입니다. **PostgreSQL, MySQL, MariaDB, SQLite** 등 다양한 데이터베이스를 지원하며, **비동기 Rust 런타임**과 **TLS 암호화** 등 현대적인 아키텍처에 최적화돼 있습니다. **100% Rust로 안전하게 구현**되어 있어 신뢰성이 높고, 듀얼 라이선스(MIT/Apache 2.0)로 오픈소스 및 상업 프로젝트 모두 자유롭게 활용할 수 있습니다.

## Topic Body

- 비동기(async) 방식의 순수 Rust 기반 SQL Crate로, Rust 매크로를 이용해 **DSL 없이 컴파일 타임에 SQL 쿼리 검증** 가능  
  - ORM이 아님! : **ORM 없이 SQL을 그대로 활용하고 싶은 프로젝트**에 최적  
- **PostgreSQL, MySQL, MariaDB, SQLite** 등 데이터베이스 지원  
  - .env 파일에 DATABASE_URL 지정해 손쉽게 컴파일 타임 체크 가능  
- **Pure Rust** 구현(MySQL/MariaDB 드라이버는 100% Rust로 작성. SQLite는 C 라이브러리 연동), **unsafe 코드 사용 없이** 안전하게 설계되어 신뢰성 높음  
- **Tokio, async-std, actix** 등 주요 Rust 비동기 런타임 및 다양한 TLS 백엔드와 호환되며, 플랫폼 독립적으로 사용할 수 있음  
- **MIT/Apache 2.0 듀얼 라이선스**로, 오픈 소스 및 상업적 프로젝트에 폭넓게 활용 가능  
  
### 주요 기능  
- `sqlx::Pool`을 이용한 **커넥션 풀링**  
- 데이터베이스로부터 데이터를 **비동기 Row 스트리밍**  
- 커넥션별로 **자동 쿼리 준비 및 캐싱**  
- 준비되지 않은(Prepared 아닌) 쿼리도 간단히 실행 가능, 결과는 동일 Row 타입으로 반환  
- 지원하는 DB(MySQL, MariaDB, PostgreSQL)에서 TLS 암호화 연결 지원  
- 비동기 **PostgreSQL 알림** 지원 : `LISTEN`과 `NOTIFY`   
- 세이브포인트(Savepoint)를 활용한 **중첩 트랜잭션** 지원  
- 런타임에 DB 드라이버를 선택적으로 교체 가능한 `AnyPool` 지원

## Comments



### Comment 42103

- Author: secret3056
- Created: 2025-08-04T17:04:51+09:00
- Points: 1

개인적으로는 Go의 sqlc 접근 방식을 좋아합니다.  
  
일단 네이티브 쿼리를 짜고 코드를 생성하는 방식입니다.

### Comment 42082

- Author: mokaa
- Created: 2025-08-04T10:14:19+09:00
- Points: 1

_bin collation 필드를 String으로 직렬화할 수 없는 이슈가 1년넘게 고쳐지고 있지 않아서 프로덕션용으로 사용하기엔 무리가 있습니다. 심지어 회귀 이슈라서 많은 사용자나 라이브러리들이 0.7버전에 머물러 있습니다.

### Comment 42104

- Author: secret3056
- Created: 2025-08-04T17:07:00+09:00
- Points: 1
- Parent comment: 42082
- Depth: 1

일단 고치긴 한 것 같은데 1년 가까이 걸리긴 했네요

### Comment 42096

- Author: unsure4000
- Created: 2025-08-04T13:59:46+09:00
- Points: 1
- Parent comment: 42082
- Depth: 1

이슈 링크 부탁드려도 될까요? 좀 찾아봤는데 찾기 힘들어서요.

### Comment 42100

- Author: yshrust
- Created: 2025-08-04T16:30:17+09:00
- Points: 1
- Parent comment: 42096
- Depth: 2

https://github.com/launchbadge/sqlx/issues/3387  
  
이거 같아요

### Comment 42071

- Author: xguru
- Created: 2025-08-04T09:47:01+09:00
- Points: 1

[SQLx - Rust SQL Toolkit](https://news.hada.io/topic?id=2160)  
5년전에 한번 공유했었는데요. 그동안 꽤 많은 변화가 있었습니다.   
  
이제 컴파일 타임에 실제 DB와 연동해서 검증이 가능해졌고,   
tokio/async-std/actix 까지 호환되며,   
커넥션 풀, 중첩 트랜잭션, AnyPool 등 실전에서 쓸만한 기능과 테스트가 강화되어 대규모 서비스에도 적용이 가능한,  
ORM 없이 SQL을 직접 사용하는 프로젝트에 추천할만한 프로젝트가 되었습니다.   
  
그리고 sqlx 를 통해서 ORM을 구현한 [SeaORM](https://github.com/SeaQL/sea-orm), [Welds](https://github.com/weldsorm/welds) 같은 프로젝트도 생겨났고요   
그외에 쿼리 빌더인 [SeaQuery](https://github.com/SeaQL/sea-query) 나 웹 어플리케이션 프레임워크인 [SQLPage](https://github.com/sqlpage/SQLPage) 같은 것도 있네요
