Démarrage rapide : Utiliser du langage Go pour se connecter et interroger des données dans Azure Database pour MySQL
S’APPLIQUE À : Azure Database pour MySQL – Serveur unique
Important
Le serveur unique Azure Database pour MySQL est en voie de mise hors service. Nous vous conseillons vivement de procéder à une mise à niveau vers Azure Database pour MySQL – Serveur flexible. Pour obtenir plus d’informations sur la migration vers Azure Database pour MySQL – Serveur flexible, consultez Qu’en est-il du Serveur unique Azure Database pour MySQL ?
Ce guide de démarrage rapide vous explique comment vous connecter à une base de données Azure Database pour MySQL à partir de plateformes Windows, Ubuntu Linux et Mac à l’aide d’un code écrit dans le langage Go. Il détaille l’utilisation d’instructions SQL pour interroger la base de données, la mettre à jour, y insérer des données ou en supprimer. Cette rubrique part du principe que vous connaissez les bases du développement Go et que vous ne savez pas utiliser Azure Database pour MySQL.
Prérequis
Ce guide de démarrage rapide s’appuie sur les ressources créées dans l’un de ces guides :
- Créer un serveur de base de données Azure pour MySQL à l’aide du Portail Azure
- Création d’un serveur de base de données Azure pour MySQL à l’aide d’Azure CLI
Important
Vérifiez que l’adresse IP à partir de laquelle vous vous connectez a été ajoutée aux règles de pare-feu du serveur à l’aide du portail Azure ou d’Azure CLI
Installer le connecteur pour Go et MySQL
Installez Go et le pilote go-sql-driver pour MySQL sur votre propre ordinateur. Suivez les étapes correspondant à votre plateforme :
Téléchargez et installez Go pour Microsoft Windows en fonction des instructions d’installation.
Lancez l’invite de commandes à partir du menu Démarrer.
Créez un dossier pour votre projet.
mkdir %USERPROFILE%\go\src\mysqlgo
.Basculez dans le dossier de projet, par exemple
cd %USERPROFILE%\go\src\mysqlgo
.Définissez la variable d’environnement afin que GOPATH indique le répertoire du code source.
set GOPATH=%USERPROFILE%\go
.Installez le pilote-go-sql pour mysql en exécutant la commande
go get github.com/go-sql-driver/mysql
.Pour résumer, installez Go, puis exécutez ces commandes dans l’invite de commandes :
mkdir %USERPROFILE%\go\src\mysqlgo cd %USERPROFILE%\go\src\mysqlgo set GOPATH=%USERPROFILE%\go go get github.com/go-sql-driver/mysql
Obtenir des informations de connexion
Obtenez les informations requises pour vous connecter à la base de données Azure pour MySQL. Vous devez disposer du nom de serveur complet et des informations d’identification.
- Connectez-vous au portail Azure.
- Dans le menu de gauche du portail Azure, cliquez sur Toutes les ressources, puis recherchez le serveur que vous venez de créer, par exemple mydemoserver.
- Cliquez sur le nom du serveur.
- Dans le panneau Vue d’ensemble du serveur, notez le nom du serveur et le nom de connexion de l’administrateur du serveur. Si vous oubliez votre mot de passe, vous pouvez également le réinitialiser dans ce panneau.
Générer et exécuter du code Go
- Pour écrire du code Golang, vous pouvez utiliser un éditeur de texte de base, tel que NotePad sous Windows, vi ou Nano sous Ubuntu, et TextEdit sous mac. Si vous préférez un environnement de développement intégré (IDE) plus complet, essayez Gogland de JetBrains, Visual Studio Code de Microsoft ou Atom.
- Collez le code Go des sections ci-dessous dans les fichiers texte, puis enregistrez-les dans votre dossier de projet avec l’extension de fichier *.go (par exemple, le chemin d’accès Windows
%USERPROFILE%\go\src\mysqlgo\createtable.go
ou le chemin d’accès Linux~/go/src/mysqlgo/createtable.go
). - Recherchez les constantes
HOST
,DATABASE
,USER
etPASSWORD
dans le code, puis remplacez les valeurs de test par les vôtres. - Lancez l’invite de commandes ou l’interpréteur de commandes Bash. Basculez dans votre dossier de projet. Par exemple, sur Windows
cd %USERPROFILE%\go\src\mysqlgo\
. Sur Linuxcd ~/go/src/mysqlgo/
. Certains éditeurs EDI mentionnés offrent des fonctionnalités de débogage et de prise en charge du CLR sans nécessiter l’utilisation de l’interpréteur de commandes. - Exécutez le code en tapant la commande
go run createtable.go
afin de compiler l’application et de l’exécuter. - Vous pouvez également générer le code dans une application native,
go build createtable.go
, puis lancercreatetable.exe
afin d’exécuter l’application.
Se connecter, créer des tables et insérer des données
Utilisez le code suivant pour vous connecter au serveur, créer une table et charger les données à l’aide d’une instruction SQL INSERT.
Le code importe trois packages : le package sql, le pilote go sql qui sert de pilote pour communiquer avec la base de données Azure, et le package fmt pour les entrées et sorties imprimées sur la ligne de commande.
Le code appelle la méthode sql.Open() afin de se connecter à la base de données Azure Database pour MySQL, et vérifie la connexion à l’aide de la méthode db.Ping(). Un descripteur de la base de données est utilisé partout : il contient le pool de connexions pour le serveur de base de données. Le code appelle la méthode Exec() plusieurs fois pour exécuter plusieurs commandes DDL. Le code utilise également Prepare() et Exec() pour exécuter des instructions préparées avec différents paramètres afin d’insérer trois lignes. À chaque fois, une méthode checkError() personnalisée est employée pour savoir si une erreur s’est produite, et quitte l’application le cas échéant.
Remplacez les constantes host
, database
, user
et password
par vos propres valeurs.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Drop previous table of same name if one exists.
_, err = db.Exec("DROP TABLE IF EXISTS inventory;")
checkError(err)
fmt.Println("Finished dropping table (if existed).")
// Create table.
_, err = db.Exec("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
checkError(err)
fmt.Println("Finished creating table.")
// Insert some data into table.
sqlStatement, err := db.Prepare("INSERT INTO inventory (name, quantity) VALUES (?, ?);")
res, err := sqlStatement.Exec("banana", 150)
checkError(err)
rowCount, err := res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("orange", 154)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
res, err = sqlStatement.Exec("apple", 100)
checkError(err)
rowCount, err = res.RowsAffected()
fmt.Printf("Inserted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Lire les données
Utilisez le code suivant pour vous connecter et lire des données à l’aide d’une instruction SQL SELECT.
Le code importe trois packages : le package sql, le pilote go sql qui sert de pilote pour communiquer avec la base de données Azure, et le package fmt pour les entrées et sorties imprimées sur la ligne de commande.
Le code appelle la méthode sql.Open() afin de se connecter à la base de données Azure pour MySQL et vérifie la connexion à l’aide de la méthode db.Ping(). Un descripteur de la base de données est utilisé partout : il contient le pool de connexions pour le serveur de base de données. Le code appelle la méthode Query() pour exécuter la commande de sélection. Ensuite il exécute Next() pour itérer au sein du jeu de résultats et Scan() pour analyser les valeurs de colonne, pour ensuite les enregistrer sous la forme de variables. À chaque fois, une méthode checkError() personnalisée est utilisée pour vérifier si une erreur s’est produite. Si tel est le cas, dépêchez-vous de quitter l’application.
Remplacez les constantes host
, database
, user
et password
par vos propres valeurs.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Variables for printing column data when scanned.
var (
id int
name string
quantity int
)
// Read some data from the table.
rows, err := db.Query("SELECT id, name, quantity from inventory;")
checkError(err)
defer rows.Close()
fmt.Println("Reading data:")
for rows.Next() {
err := rows.Scan(&id, &name, &quantity)
checkError(err)
fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
}
err = rows.Err()
checkError(err)
fmt.Println("Done.")
}
Mettre à jour des données
Utilisez le code suivant pour vous connecter et mettre à jour les données à l’aide d’une instruction SQL UPDATE.
Le code importe trois packages : le package sql, le pilote go sql qui sert de pilote pour communiquer avec la base de données Azure, et le package fmt pour les entrées et sorties imprimées sur la ligne de commande.
Le code appelle la méthode sql.Open() afin de se connecter à la base de données Azure pour MySQL et vérifie la connexion à l’aide de la méthode db.Ping(). Un descripteur de la base de données est utilisé partout : il contient le pool de connexions pour le serveur de base de données. Le code appelle la méthode Exec() pour exécuter la commande de mise à jour. À chaque fois, une méthode checkError() personnalisée est utilisée pour vérifier si une erreur s’est produite. Si tel est le cas, dépêchez-vous de quitter l’application.
Remplacez les constantes host
, database
, user
et password
par vos propres valeurs.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("UPDATE inventory SET quantity = ? WHERE name = ?", 200, "banana")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Updated %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Suppression de données
Utilisez le code suivant pour vous connecter et supprimer des données à l’aide d’une instruction SQL DELETE.
Le code importe trois packages : le package sql, le pilote go sql qui sert de pilote pour communiquer avec la base de données Azure, et le package fmt pour les entrées et sorties imprimées sur la ligne de commande.
Le code appelle la méthode sql.Open() afin de se connecter à la base de données Azure pour MySQL et vérifie la connexion à l’aide de la méthode db.Ping(). Un descripteur de la base de données est utilisé partout : il contient le pool de connexions pour le serveur de base de données. Le code appelle la méthode Exec() pour exécuter la commande de mise à jour. À chaque fois, une méthode checkError() personnalisée est utilisée pour vérifier si une erreur s’est produite. Si tel est le cas, dépêchez-vous de quitter l’application.
Remplacez les constantes host
, database
, user
et password
par vos propres valeurs.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
const (
host = "mydemoserver.mysql.database.azure.com"
database = "quickstartdb"
user = "myadmin@mydemoserver"
password = "yourpassword"
)
func checkError(err error) {
if err != nil {
panic(err)
}
}
func main() {
// Initialize connection string.
var connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true", user, password, host, database)
// Initialize connection object.
db, err := sql.Open("mysql", connectionString)
checkError(err)
defer db.Close()
err = db.Ping()
checkError(err)
fmt.Println("Successfully created connection to database.")
// Modify some data in table.
rows, err := db.Exec("DELETE FROM inventory WHERE name = ?", "orange")
checkError(err)
rowCount, err := rows.RowsAffected()
fmt.Printf("Deleted %d row(s) of data.\n", rowCount)
fmt.Println("Done.")
}
Nettoyer les ressources
Pour nettoyer toutes les ressources utilisées dans le cadre de ce guide de démarrage rapide, supprimez le groupe de ressources à l’aide de la commande suivante :
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes