Travailler avec des bases de données SQL en Rust
Au fur et à mesure que vous développez des programmes Rust, vous pouvez avoir besoin d’interagir avec des bases de données pour le stockage et la récupération de données.
Le typage, la sécurité mémoire et les performances de Rust, combinés à son support pour les opérations asynchrones, les ORM et les migrations, permettent un traitement des données efficace et évolutif, faisant de Rust un excellent choix pour la construction d’applications de bases de données.
Introduction à l’utilisation de bases de données SQL en Rust
Il existe de nombreux crates et bibliothèques de base de données dans l’écosystème Rust qui fournissent un support pour les différents paradigmes de base de données.
Pour les bases de données SQL, vous avez le choix entre des pilotes de base de données tels que Libpq, Mysql-connecteur et Sqlite3 qui fournissent une interface pour les programmes Rust afin d’interagir avec les bases de données directement sans aucune couche d’abstraction sur le SQL et les ORM (Object-Relational Mappers) tels que Diesel, Sqlx et Rust-postgres qui fournissent un moyen pratique de travailler avec des bases de données sur des types de données Rust tels que les structures et les fonctions.
L’ORM Diesel est l’un des packages de base de données les plus populaires dans l’écosystème Rust. En tant qu’ORM, Diesel fournit des fonctionnalités allant de la construction et de l’exécution de requêtes à la définition de modèles et aux migrations de schémas de base de données, facilitant l’interaction avec les bases de données et l’écriture d’un code efficace, propre et facile à maintenir.
Diesel prend également en charge plusieurs moteurs de base de données, notamment PostgreSQL, MySQL et SQLite, et fournit un ensemble robuste de fonctionnalités permettant de gérer des opérations de base de données complexes telles que les transactions, les jointures et les fonctions d’agrégation.
Avec des outils puissants, des fonctionnalités et une excellente documentation, Diesel est devenu un choix incontournable pour de nombreux développeurs Rust qui cherchent à construire des applications robustes et évolutives basées sur les données.
Démarrer avec Diesel
Vous devrez ajouter le fichier diesel et dotenv aux dépendances de votre projet dans la section des dépendances de votre fichier cargo.toml de votre fichier cargo.toml.
Après avoir ajouté les crates en tant que dépendances, vous devez installer le fichier diesel_cli pour interagir avec Diesel.
Exécutez cette commande pour installer l’outil diesel_cli pour installer l’outil diesel_cli :
Vous pouvez appeler l’outil CLI avec la commande diesel après avoir installé l’outil.
Ensuite, créez un fichier de variables d’environnement et spécifiez l’URL de votre base de données.
Exécutez cette commande pour créer et insérer l’URL de la base de données pour une base de données SQLite en mémoire.
Pour travailler avec Diesel, vous devez installer sqlite3 ou votre base de données préférée sur votre ordinateur.
Enfin, exécutez la commande setup pour Diesel afin de mettre en place une base de données pour votre projet :
La commande setup crée un migrations crée la base de données spécifiée dans la commande DATABASE_URL et exécute les migrations existantes.
Configuration des migrations avec Diesel
Après avoir configuré votre base de données avec Diesel, vous utiliserez la commande migration generate pour générer des fichiers de migration. Vous ajouterez le nom du fichier comme argument :
La commande génère deux fichiers SQL dans le répertoire migrations : up.sql et down.sql.
Vous écrirez le langage SQL pour les définitions des tables de votre base de données dans le fichier up.sql dans le fichier up.sql :
Vous écrirez du code SQL pour supprimer les tables de la base de données dans le fichier down.sql dans le fichier down.sql :
Après avoir écrit les fichiers SQL, exécutez le fichier de migration pour appliquer les migrations en cours.
En outre, vous pouvez utiliser la commande migration redo pour annuler les migrations :
Vous pouvez également utiliser la commande print-schema pour imprimer le schéma. La commande imprime le contenu du fichier schema.rs fichier.
La sortie du fichier print_schema est le code Rust qui correspond à votre schéma SQL :
Connexion à votre base de données SQL avec Diesel
Tout d’abord, ajoutez ces importations et directives à votre fichier :
Vous utiliserez les importations et les directives pour vous connecter à votre base de données et effectuer des opérations.
Voici comment vous pouvez vous connecter à une base de données SQLite avec une fonction et renvoyer une instance de connexion :
Les établir_connexion renvoie la structure d’instance de connexion ( SqliteConnection ). La fonction établir_connexion charge les variables d’environnement avec l’option ok accède à l’URL de la base de données avec la fonction var et établit une connexion avec la base de données via l’URL avec la fonction établir .
Après une connexion réussie, vous pouvez exécuter des requêtes et les insérer dans votre base de données.
Insérer des valeurs dans une base de données avec Diesel
Vous utiliserez une structure qui correspond à votre schéma SQL pour insérer des valeurs dans votre base de données.
Voici une structure qui correspond au schéma humain humain :
La fonction d’insertion renvoie une instance de la table humain pour les autres opérations.
Vous aurez besoin d’une structure pour votre fonction d’insertion ; la structure mettra en œuvre deux macroattributs, l’un pour la fonctionnalité d’insertion et l’autre qui identifie la table pour l’opération.
Voici la structure pour l’opération d’insertion :
Votre fonction d’insertion prend en charge une instance de connexion et les données que vous souhaitez insérer dans la base de données. Elle insère les données et imprime un message en fonction de l’état de l’opération.
L’opération d’insertion insert_into prend les paramètres et insère les valeurs dans la base de données avec la fonction Diesel insérer_into qui prend en compte le tableau et la fonction valeurs qui prend en compte une instance de structure. La fonction attribue l’ID dans l’ordre décroissant avec les valeurs desc avant d’exécuter l’opération.
Voici la fonction principale qui appelle la fonction insert_into :
La fonction conn est une instance de connexion, et la variable new_human est l’appel de fonction. La variable principal imprime l’ID après une opération réussie.
Interroger les bases de données avec Diesel
Alternativement, votre structure de fonction d’interrogation implémentera la fonction Interrogeable avec un attribut dérivent macro.
Voici la structure pour l’opération de requête :
La fonction d’interrogation prend en charge une instance de connexion et renvoie une structure humain comme suit :
Le query_db filtre la table humaine pour la ligne où la fonction âge est égal à 25 et renvoie la première occurrence sous la forme d’une instance struct.
Dans l’instance principal la fonction personne appelle la fonction query_db et imprime les champs de la ligne dont la valeur de l’âge est égale à 25.
Vous pouvez construire des serveurs Web avec Rust
Rust continue de gagner en popularité dans le développement web en tant que langage côté serveur avec des bibliothèques telles que Actix-web et Fusée qui facilitent la mise en place de serveurs et la création d’API et de sites web en faisant abstraction de fonctionnalités complexes.
La plupart des serveurs web doivent interagir avec des bases de données pour le stockage et la récupération des données. Vous pouvez intégrer vos applications Diesel-powered avec Actix-web ou Rocket pour créer des applications web sophistiquées.
S’abonner à notre lettre d’information
Quelle est la meilleure base de données pour Rust ?
Diesel est le moyen le plus productif d’interagir avec les bases de données en Rust en raison de ses abstractions sûres et composables sur les requêtes.
Comment utiliser une base de données SQL ?
L’article montre comment suivre les étapes suivantes :
- Connectez-vous à une instance de SQL Server.
- Créez une base de données.
- Créez une table dans votre nouvelle base de données.
- Insérez des lignes dans votre nouvelle table.
- Interrogez la nouvelle table et affichez les résultats.
- Utilisez le tableau de la fenêtre d’interrogation pour vérifier vos propriétés de connexion.
SQL peut-il interagir avec les programmes de base de données ?
SQL est un langage de programmation utilisé pour communiquer avec les bases de données et les manipuler. Le langage de requête structuré (SQL) est un langage de programmation utilisé pour communiquer avec les bases de données et les manipuler.
SQLx est-il un ORM ?
SQLx n’est pas un ORM ! SQLx supporte les requêtes vérifiées à la compilation. Cependant, il ne le fait pas en fournissant une API Rust ou un DSL (langage spécifique au domaine) pour construire des requêtes. Au lieu de cela, il fournit des macros qui prennent du SQL régulier en entrée et s’assurent qu’il est valide pour votre base de données.