Repolode
transact-rs

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. 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製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 の数値は毎日更新されます。

関連プロジェクト