Démarrage rapide : Utiliser le langage Go afin de se connecter à Azure Database pour PostgreSQL et d'interroger les données - Serveur unique

S’APPLIQUE À : Azure Database pour PostgreSQL – Serveur unique

Important

Azure Database pour PostgreSQL - Serveur unique est en voie de mise hors service. Nous vous recommandons vivement de procéder à une mise à niveau vers un serveur flexible Azure Database pour PostgreSQL. Pour plus d’informations sur la migration vers le Serveur flexible Azure Database pour PostgreSQL, consultez l’article Qu’arrive-t-il au Serveur unique Azure Database pour PostgreSQL ?.

Ce guide de démarrage rapide vous explique comment vous connecter à une base de données Azure pour PostgreSQL en utilisant du code écrit dans le langage Go (golang). 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. Cet article suppose que vous connaissez les bases du développement à l’aide de Go, mais que vous ne connaissez pas la base de données Azure pour PostgreSQL.

Prérequis

Ce guide de démarrage rapide s’appuie sur les ressources créées dans l’un de ces guides :

Installer le connecteur pour Go et pq

Installez Go et le pilote Pure Go Postgres (pq) sur votre propre ordinateur. Suivez les étapes correspondant à votre plateforme :

Windows

  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\postgresqlgo.

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

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

  6. Installez le pilote Pure Go Postgres (pq) en exécutant la commande go get github.com/lib/pq.

    Pour résumer, installez Go, puis exécutez ces commandes dans l’invite de commandes :

    mkdir  %USERPROFILE%\go\src\postgresqlgo
    cd %USERPROFILE%\go\src\postgresqlgo
    set GOPATH=%USERPROFILE%\go
    go get github.com/lib/pq
    

Linux (Ubuntu)

  1. Lancez l’interpréteur de commandes Bash.

  2. Installez Go en exécutant la commande sudo apt-get install golang-go.

  3. Créez un dossier pour votre projet dans votre répertoire de base, par exemple mkdir -p ~/go/src/postgresqlgo/.

  4. Basculez dans le dossier de projet, par exemple cd ~/go/src/postgresqlgo/.

  5. Définir la variable d’environnement GOPATH pour indiquer un répertoire source valide, par exemple le dossier de votre répertoire de base Go. Sur l’interpréteur de commandes Bash, exécutez export GOPATH=~/go pour ajouter le répertoire Go en tant que GOPATH pour la session d’interpréteur de commandes en cours.

  6. Installez le pilote Pure Go Postgres (pq) en exécutant la commande go get github.com/lib/pq.

    Pour résumer, exécutez ces commandes Bash :

    sudo apt-get install golang-go
    mkdir -p ~/go/src/postgresqlgo/
    cd ~/go/src/postgresqlgo/
    export GOPATH=~/go/
    go get github.com/lib/pq
    

Système d’exploitation mac d’Apple

  1. Téléchargez et installez Go en fonction des instructions d’installation correspondant à votre plateforme.

  2. Lancez l’interpréteur de commandes Bash.

  3. Créez un dossier pour votre projet dans votre répertoire de base, par exemple mkdir -p ~/go/src/postgresqlgo/.

  4. Basculez dans le dossier de projet, par exemple cd ~/go/src/postgresqlgo/.

  5. Définir la variable d’environnement GOPATH pour indiquer un répertoire source valide, par exemple le dossier de votre répertoire de base Go. Sur l’interpréteur de commandes Bash, exécutez export GOPATH=~/go pour ajouter le répertoire Go en tant que GOPATH pour la session d’interpréteur de commandes en cours.

  6. Installez le pilote Pure Go Postgres (pq) en exécutant la commande go get github.com/lib/pq.

    Pour résumer, installez Go, puis exécutez ces commandes Bash :

    mkdir -p ~/go/src/postgresqlgo/
    cd ~/go/src/postgresqlgo/
    export GOPATH=~/go/
    go get github.com/lib/pq
    

Obtenir des informations de connexion

Obtenez les informations de connexion requises pour vous connecter à la base de données Azure pour PostgreSQL. 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, sélectionnez Toutes les ressources, puis recherchez le serveur que vous venez de créer, par exemple mydemoserver.
  3. Sélectionnez 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. Nom du serveur Azure Database pour PostgreSQL

Générer et exécuter du code Go

  1. Pour écrire du code Golang, vous pouvez utiliser un éditeur de texte brut, tel que NotePad dans Microsoft Windows, vi ou Nano dans Ubuntu, et TextEdit dans macOS. Si vous préférez travailler dans un environnement de développement intégré (IDE) plus complet, essayez GoLand de JetBrains, Visual Studio Code de Microsoft ou Atom.
  2. Collez le code Golang des sections suivantes dans des fichiers texte, et enregistrez ces fichiers dans un dossier de projet avec l’extension de fichier *.go, par exemple le chemin Windows %USERPROFILE%\go\src\postgresqlgo\createtable.go ou le chemin Linux ~/go/src/postgresqlgo/createtable.go.
  3. Recherchez les constantes HOST, DATABASE, USER, et PASSWORD dans le code et remplacez les valeurs test par les valeurs que vous souhaitez.
  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\postgresqlgo\. Sur Linux cd ~/go/src/postgresqlgo/. Certains environnements 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 et créer une table

Utilisez le code suivant pour vous connecter et créer une table à l’aide de l’instruction CREATE TABLE, suivie des instructions SQL INSERT INTO pour ajouter des lignes à la table.

Le code importe trois packages : le package sql, le package pq qui sert de pilote pour communiquer avec le serveur PostgreSQL, 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 PostgreSQL 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 SQL. Chaque fois, une méthode checkError() personnalisée vérifie si une erreur s’est produite. Si tel est le cas, dépêchez-vous de quitter l’application.

Remplacez les paramètres HOST, DATABASE, USER et PASSWORD par vos propres valeurs.

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/lib/pq"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {
	// Initialize connection string.
	var connectionString string = fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	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.
	sql_statement := "INSERT INTO inventory (name, quantity) VALUES ($1, $2);"
	_, err = db.Exec(sql_statement, "banana", 150)
	checkError(err)
	_, err = db.Exec(sql_statement, "orange", 154)
	checkError(err)
	_, err = db.Exec(sql_statement, "apple", 100)
	checkError(err)
	fmt.Println("Inserted 3 rows of data")
}

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 package pq qui sert de pilote pour communiquer avec le serveur PostgreSQL, 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 PostgreSQL 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. La requête Select est exécutée par le biais d’un appel à la méthode db.Query(), et les lignes obtenues sont conservées dans une variable de type lignes. Le code lit les valeurs de données de la colonne dans la ligne actuelle à l’aide de la méthode rows.Scan() et effectue une boucle sur les lignes à l’aide de l’itérateur rows.Next() jusqu’à la suppression de toutes les lignes. Les valeurs de colonne de chaque ligne sont imprimées en sortie sur la console. À 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 paramètres HOST, DATABASE, USER et PASSWORD par vos propres valeurs.

package main

import (
	"database/sql"
	"fmt"
	_ "github.com/lib/pq"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString string = fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database")

	// Read rows from table.
	var id int
	var name string
	var quantity int

	sql_statement := "SELECT * from inventory;"
	rows, err := db.Query(sql_statement)
	checkError(err)
	defer rows.Close()

	for rows.Next() {
		switch err := rows.Scan(&id, &name, &quantity); err {
		case sql.ErrNoRows:
			fmt.Println("No rows were returned")
		case nil:
			fmt.Printf("Data row = (%d, %s, %d)\n", id, name, quantity)
		default:
			checkError(err)
		}
	}
}

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 package pq qui sert de pilote pour communiquer avec le serveur Postgres, 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 PostgreSQL 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 l’instruction SQL qui met à jour la table. 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 paramètres HOST, DATABASE, USER et PASSWORD par vos propres valeurs.

package main

import (
  "database/sql"
  _ "github.com/lib/pq"
  "fmt"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString string = 
		fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database")

	// Modify some data in table.
	sql_statement := "UPDATE inventory SET quantity = $2 WHERE name = $1;"
	_, err = db.Exec(sql_statement, "banana", 200)
	checkError(err)
	fmt.Println("Updated 1 row of data")
}

Suppression de données

Utilisez le code ci-après pour vous connecter et supprimer les données à l’aide d’une instruction SQL DELETE.

Le code importe trois packages : le package sql, le package pq qui sert de pilote pour communiquer avec le serveur Postgres, 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 PostgreSQL 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 l’instruction SQL qui supprime une ligne de la table. 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 paramètres HOST, DATABASE, USER et PASSWORD par vos propres valeurs.

package main

import (
  "database/sql"
  _ "github.com/lib/pq"
  "fmt"
)

const (
	// Initialize connection constants.
	HOST     = "mydemoserver.postgres.database.azure.com"
	DATABASE = "mypgsqldb"
	USER     = "mylogin@mydemoserver"
	PASSWORD = "<server_admin_password>"
)

func checkError(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {

	// Initialize connection string.
	var connectionString string = 
		fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", HOST, USER, PASSWORD, DATABASE)

	// Initialize connection object.
	db, err := sql.Open("postgres", connectionString)
	checkError(err)

	err = db.Ping()
	checkError(err)
	fmt.Println("Successfully created connection to database")

	// Delete some data from table.
	sql_statement := "DELETE FROM inventory WHERE name = $1;"
	_, err = db.Exec(sql_statement, "orange")
	checkError(err)
	fmt.Println("Deleted 1 row of data")
}

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