Partager via


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 flexible

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 :

Important

Nous vous recommandons d’utiliser un serveur avec l’Accès public (adresses IP autorisées) activé pour ce guide de démarrage rapide. L’utilisation d’un serveur avec l’Accès privé (intégration au réseau virtuel) activé pour effectuer ce guide de démarrage rapide peut impliquer des étapes supplémentaires qui ne sont pas couvertes.

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 :

  1. Téléchargez et installez Go pour Microsoft Windows en fonction des instructions d’installation.

  2. Lancez l’invite de commandes à partir du menu Démarrer.

  3. Créez un dossier pour votre projet, tel que mkdir %USERPROFILE%\go\src\mysqlgo.

  4. Basculez dans le dossier de projet, par exemple cd %USERPROFILE%\go\src\mysqlgo.

  5. Définissez la variable d’environnement afin que GOPATH indique le répertoire du code source : set GOPATH=%USERPROFILE%\go.

  6. Exécutez go mod init pour créer un module dans le répertoire actuel. Par exemple : go mod init mysqlgo.

    • Le paramètre <module_path> est généralement un emplacement du dépôt GitHub, par exemple, github.com/<your_github_account_name>/<directory>.
    • Lorsque vous créez une application en ligne de commande à titre de test et que vous ne la publiez pas, le <module_path> n'a pas besoin de faire référence à un emplacement réel. Par exemple : mysqlgo.
  7. 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 mod init mysqlgo
    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.

  1. Connectez-vous au portail Azure.
  2. 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.
  3. Cliquez sur le nom du serveur.
  4. 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

  1. 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.
  2. 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).
  3. Recherchez les constantes host, database, user et password dans le code, puis remplacez les valeurs de test par les vôtres. Lorsque vous créez votre instance de serveur Azure Database pour MySQL, une base de données par défaut nommée flexibleserverdb est créée. Vous pouvez utiliser cette base de données ou une autre que vous avez créée.
  4. 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 Linux cd ~/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.
  5. Exécutez le code en tapant la commande go run createtable.go afin de compiler l’application et de l’exécuter.
  6. Vous pouvez également générer le code dans une application native, go build createtable.go, puis lancer createtable.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 = "flexibleserverdb"
	user     = "myadmin"
	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&tls=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 = "flexibleserverdb"
	user     = "myadmin"
	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&tls=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 = "flexibleserverdb"
	user     = "myadmin"
	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&tls=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 = "flexibleserverdb"
	user     = "myadmin"
	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&tls=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

Étapes suivantes