14 Punkte von xguru 2025-08-04 | 6 Kommentare | Auf WhatsApp teilen
  • Ein asynchrones SQL-Crate auf Basis von reinem Rust, das mit Rust-Makros SQL-Abfragen ohne DSL zur Compile-Zeit validieren kann
    • Kein ORM! : Optimal für Projekte, die SQL ohne ORM direkt nutzen möchten
  • Unterstützung für Datenbanken wie PostgreSQL, MySQL, MariaDB, SQLite
    • Durch Angabe von DATABASE_URL in der .env-Datei ist eine einfache Prüfung zur Compile-Zeit möglich
  • Pure-Rust-Implementierung (der MySQL-/MariaDB-Treiber ist zu 100 % in Rust geschrieben, SQLite bindet eine C-Bibliothek an), sicher entworfen ohne Verwendung von unsafe-Code, was die Zuverlässigkeit erhöht
  • Kompatibel mit wichtigen asynchronen Rust-Runtimes wie Tokio, async-std, actix sowie verschiedenen TLS-Backends und plattformunabhängig einsetzbar
  • MIT/Apache-2.0-Doppellizenz, daher breit nutzbar für Open-Source- und kommerzielle Projekte

Hauptfunktionen

  • Connection Pooling mit sqlx::Pool
  • Asynchrones Row-Streaming von Daten aus der Datenbank
  • Automatische Query-Vorbereitung und Caching pro Connection
  • Auch nicht vorbereitete (nicht Prepared) Queries lassen sich einfach ausführen; die Ergebnisse werden als derselbe Row-Typ zurückgegeben
  • TLS-verschlüsselte Verbindungen für unterstützte DBs (MySQL, MariaDB, PostgreSQL)
  • Unterstützung für asynchrone PostgreSQL-Benachrichtigungen: LISTEN und NOTIFY
  • Unterstützung für verschachtelte Transaktionen mit Savepoints
  • Unterstützung für AnyPool, mit dem sich DB-Treiber zur Laufzeit selektiv austauschen lassen

6 Kommentare

 
secret3056 2025-08-04

Persönlich bevorzuge ich den sqlc-Ansatz von Go.

Dabei schreibt man zunächst native Queries und generiert dann den Code.

 
mokaa 2025-08-04

Das Problem, dass sich Felder mit _bin-Collation nicht als String serialisieren lassen, wird seit über einem Jahr nicht behoben, sodass es für den Einsatz in der Produktion kaum geeignet ist. Da es sich sogar um ein Regressionsproblem handelt, bleiben viele Nutzer und Bibliotheken bei Version 0.7.

 
secret3056 2025-08-04

Scheint wohl erst mal behoben zu sein, aber es hat fast ein Jahr gedauert.

 
unsure4000 2025-08-04

Könnten Sie bitte den Issue-Link teilen? Ich habe schon etwas gesucht, aber er ist schwer zu finden.

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

SQLx - Rust SQL Toolkit
Ich hatte es vor 5 Jahren schon einmal geteilt, aber seitdem hat sich ziemlich viel verändert.

Jetzt ist eine Validierung zur Compile-Zeit durch die Anbindung an eine echte Datenbank möglich,
und es ist mit tokio/async-std/actix kompatibel.
Auch Funktionen und Tests für den Praxiseinsatz wurden ausgebaut, etwa Connection Pooling, verschachtelte Transaktionen und AnyPool, sodass es sich auch für große Services einsetzen lässt.
Damit ist es zu einem Projekt geworden, das man Projekten empfehlen kann, die SQL ohne ORM direkt verwenden.

Außerdem sind über sqlx Projekte wie SeaORM und Welds entstanden, die ein ORM implementieren.
Daneben gibt es auch Dinge wie den Query Builder SeaQuery oder das Web-Application-Framework SQLPage.