Les bases de données SQL stockent des collections de données dans des lignes et des colonnes. Vous pouvez récupérer et mettre à jour les données dans un système de gestion de base de données relationnelle (RDBMS) à l'aide du langage SQL. Parmi les nombreuses bases de données SQL disponibles, les plus populaires sont MySQL, PostgreSQL, Microsoft SQL Server et SQLite.
La fonctionnalité d'interaction avec les bases de données dans Go se trouve dans le package database/sql, qui fait partie de la bibliothèque standard.
Le package database/sql interagit avec les bases de données SQL à l'aide de pilotes. Vous pouvez importer un package de pilote approprié pour votre SGBDR et l'utiliser pour interagir avec la base de données.
Premiers pas avec les bases de données SQL dans Go
Le package database/sql est une interface générique pour les bases de données relationnelles. Pour travailler avec un serveur de base de données spécifique, vous devrez utiliser l'un des nombreux pilotes disponibles.
Heureusement, vous n'avez pas à vous soucier des implémentations spécifiques au-delà du pilote. Le package database/sql gère les opérations de base de données indépendamment du serveur auquel vous vous connectez.
Certains des pilotes de base de données Go les plus populaires sont :
- Pilote Go-SQL (MySQL)
- QP (PostgreSQL)
- Go-SQLite3 (SQLite)
- BD MSSQL (Microsoft SQL Server)
Vous pouvez utiliser le Liste des pilotes LibHunt trouver des équivalents pour autres types de base de données. La liste montre également la popularité relative de chaque système de base de données :
Installation et importation des pilotes de base de données Go
Une fois que vous avez créé un espace de travail Go et initialisé un fichier de modules Go, installez le pilote qui correspond à votre système de base de données. Par exemple, exécutez l'une des commandes suivantes dans le répertoire de votre espace de travail pour installer le pilote MySQL ou SQLite :
allez chercher -u github.com/go-sql-driver/mysql
allez chercher github.com/mattn/go-sqlite3
Après avoir installé votre pilote, importez-le pour les effets secondaires en préfixant un trait de soulignement avant le package. Par exemple, pour importer le pilote MySQL avec le package database/sql :
importer (
"base de données/sql"
_ "github.com/aller-pilote-sql/mysql"
)
En important le package du pilote pour les effets secondaires, vous pouvez l'utiliser pour vous connecter à la base de données et y exécuter des opérations.
Se connecter à une base de données SQL avec Go
Après avoir importé les pilotes de base de données, vous pouvez créer une connexion à la base de données à l'aide de Ouvert méthode de la base de données/sql forfait. Cette méthode prend le nom du pilote et le chemin d'accès à la base de données (pour SQLite) ou une chaîne de connexion (pour MySQL). Par exemple, utilisez l'une des options suivantes :
db, erreur := sql. Ouvrir("sqlite3", "models/testdb.db") // SQLite
db, erreur := sql. Ouvrir("mysql", "utilisateur: mot de passe@/nombase") // MySQL
Une fois que vous avez tenté d'ouvrir la connexion, n'oubliez pas de rechercher une erreur :
si erreur != néant {
Journal. Fataln (erreur)
}
En fonction de votre système de base de données, le Ouvert La méthode peut renvoyer une erreur si la base de données n'existe pas. Une fois connecté à une base de données, vous pouvez exécuter des requêtes et préparer des instructions à l'aide de l'instance de base de données qui Ouvert Retour.
Exécution de commandes SQL
Tu peux exécuter des commandes SQL en utilisant le Préparer méthode de votre instance de base de données. La Préparer La méthode prend une commande SQL et renvoie une instruction préparée pour exécution avec un objet d'erreur. Par exemple, si vous souhaitez créer une nouvelle table :
commande, err := db. Prepare("CREATE TABLE IF NOT EXISTS login (nom d'utilisateur TEXTE, mot de passe TEXTE)")
L'instruction ci-dessus crée une table nommée connexion, s'il n'existe pas déjà. La nouvelle table a des champs nommés Nom d'utilisateur et le mot de passe, chacun de type TEXTE.
Si vous insérez des valeurs de votre programme dans vos requêtes, vous pouvez utiliser la notation de point d'interrogation (?) pour indiquer les espaces réservés, puis transmettre les paramètres lors de l'exécution de l'instruction.
commande, err := db. Prepare("INSERT INTO login (username, password) values(?,?)")
Une fois que vous avez créé une instruction préparée, vous pouvez l'exécuter en utilisant son Exécutif méthode. Cette méthode vous permet de transmettre des valeurs de paramètres à partir de votre programme :
exec, err := commande. Exec (valeur1, valeur2)
si erreur != néant {
revenir
}
La première valeur qui Exéc() renvoie est le résultat de la requête SQL sur votre base de données. À l'aide de ce résultat de requête, vous pouvez vérifier le nombre de lignes concernées ou le dernier ID inséré :
affecté, err := exec. LignesAffectées()
si erreur != néant {
revenir
}fmt. Println (affecté)
id, erreur := exec. LastInsertId()
si erreur != néant {
revenir
}
fmt. Imprimerln (id)
Récupération des résultats de la requête
Le package database/sql vous permet d'interroger les résultats de la base de données à l'aide de la Requête méthode d'une instance de base de données :
lignes, err := db. Requête("SELECT * FROM Utilisateur")
si erreur != néant {
revenir
}
La Requête méthode renvoie un Lignes struct que vous pouvez utiliser pour travailler avec votre jeu de résultats. Par exemple, vous pouvez utiliser le Prochain méthode de votre instance de lignes pour la parcourir et travailler avec des lignes individuelles :
var Identifiant Mot de passe chaîne de caractères
pour Lignes. Prochain() {
erreur := lignes. Scan(&nom d'utilisateur, &mot de passe)si erreur != néant {
Journal. Fataln (erreur)
}
fmt. Println (nom d'utilisateur, mot de passe)
}
Dans l'exemple ci-dessus, deux variables de chaîne—Nom d'utilisateur et le mot de passe— représentent chaque valeur de colonne. La Analyse décode la ligne actuelle en ces variables correspondantes.
Les bases de données SQL sont toujours utiles
L'utilisation de bases de données dans Go est simple avec le package database/sql. Vous pouvez l'utiliser pour interroger et exécuter facilement des commandes SQL dans Go.
Les bases de données SQL sont au cœur de nombreuses applications, en particulier celles qui traitent des ensembles de données volumineux ou complexes. Vous pouvez utiliser des bases de données telles que la base de données SQLite en mémoire pour vos projets simples tels que le grattage Web et la création de bots.
Une bonne connaissance de SQL et des systèmes de gestion de bases de données est essentielle pour les utiliser efficacement dans vos programmes. Cependant, si vous choisissez de ne pas apprendre SQL, vous pouvez apprendre à utiliser les ORM pour interagir avec les bases de données SQL dans Go.