14 ポイント 投稿者 xguru 2025-08-04 | 6件のコメント | WhatsAppで共有
  • 非同期(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通知 をサポート : LISTENNOTIFY
  • セーブポイント(Savepoint)を活用した ネストしたトランザクション をサポート
  • 実行時にDBドライバを選択的に切り替え可能な AnyPool をサポート

6件のコメント

 
secret3056 2025-08-04

個人的には、Go の sqlc のアプローチが好きです。

まずネイティブクエリを書き、コードを生成する方式です。

 
mokaa 2025-08-04

_bin collation フィールドを String としてシリアライズできない問題が1年以上修正されておらず、プロダクション用途で使うには無理があります。しかも回帰問題であるため、多くのユーザーやライブラリが 0.7 バージョンにとどまっています。

 
secret3056 2025-08-04

ひとまず修正はしたようですが、結局1年近くかかりましたね

 
unsure4000 2025-08-04

イシューのリンクをお願いしてもいいでしょうか?少し探してみたのですが、見つけるのが難しくて。

 
yshrust 2025-08-04
 
xguru 2025-08-04

SQLx - Rust SQL Toolkit
5年前に一度共有したことがあるのですが、その間にかなり多くの変化がありました。

いまではコンパイル時に実際のDBと連携して検証できるようになり、
tokio/async-std/actix にも対応し、
コネクションプール、ネストしたトランザクション、AnyPool など実運用で使える機能やテストが強化され、大規模サービスにも適用可能な、
ORM なしで SQL を直接使うプロジェクトにおすすめできるプロジェクトになりました。

そして sqlx を通じて ORM を実装した SeaORMWelds のようなプロジェクトも生まれましたし、
そのほかにクエリビルダーの SeaQuery や Web アプリケーションフレームワークの SQLPage のようなものもあります