Démarrage rapide : Utiliser le langage Go afin de se connecter à Azure Database pour PostgreSQL et d'interroger les données - Serveur flexible
S’APPLIQUE À : Azure Database pour PostgreSQL : serveur flexible
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 :
- Créer une base de données - Portail
- Créer une base de données - Interface de ligne de commande Azure
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 pq
Installez Go et le pilote Pure Go Postgres (pq) 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, tel que
mkdir %USERPROFILE%\go\src\postgresqlgo
.Basculez dans le dossier de projet, par exemple
cd %USERPROFILE%\go\src\postgresqlgo
.Définissez la variable d’environnement afin que GOPATH indique le répertoire du code source.
set GOPATH=%USERPROFILE%\go
.Exécutez go mod init pour créer un module dans le répertoire actuel. Par exemple :
go mod init postgresqlgo
.- 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 :postgresqlgo
.
- Le paramètre
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 mod init postgresqlgo 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.
- Connectez-vous au portail Azure.
- 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.
- Sélectionnez 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 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.
- 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
. - Recherchez les constantes
HOST
,DATABASE
,USER
, etPASSWORD
dans le code et remplacez les valeurs test par les valeurs que vous souhaitez. Lorsque vous créez votre instance de serveur Azure Database pour PostgreSQL, une base de données par défaut nommée postgres est créée. Vous pouvez utiliser cette base de données ou une autre que vous avez créée. - 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 Linuxcd ~/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. - 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 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 = "postgres"
USER = "mylogin"
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 = "postgres"
USER = "mylogin"
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 = "postgres"
USER = "mylogin"
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 = "postgres"
USER = "mylogin"
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