SQLX - Open-Source-SQL-Toolkit auf Rust-Basis
(github.com/launchbadge)- 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_URLin der.env-Datei ist eine einfache Prüfung zur Compile-Zeit möglich
- Durch Angabe von
- 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:
LISTENundNOTIFY - 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
Persönlich bevorzuge ich den
sqlc-Ansatz von Go.Dabei schreibt man zunächst native Queries und generiert dann den Code.
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.Scheint wohl erst mal behoben zu sein, aber es hat fast ein Jahr gedauert.
Könnten Sie bitte den Issue-Link teilen? Ich habe schon etwas gesucht, aber er ist schwer zu finden.
https://github.com/launchbadge/sqlx/issues/3387
Ich glaube, das ist es.
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.