SQLデータベースのテーブル、カラム、クエリ結果を補完する、型安全なTypeScript用SQLクエリビルダー。
transact-rs/sqlx
通常のSQLを使い、コンパイル時にクエリを検証できる非同期の純Rust製SQLツールキット。PostgreSQL、MySQL/MariaDB、SQLiteに対応。
- スター
- 17,587
- フォーク
- 1,750
- 未解決の Issue
- 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のランタイム、およびTLSにはnative-tlsまたはrustlsを利用できます。
`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製Webサービスの構築。
- 手書きの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製Webサービスの構築。 手書きの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に対応する、Node.js・TypeScript向けのPromiseベースORM。
Linux、macOS、Windows対応のクロスプラットフォームSQLエディター兼データベース管理ツール
SQLクエリを読み取り、型安全なGo、Kotlin、Python、TypeScriptのコードを生成するSQLコンパイラです。