Postgres Golang

Postgres Golang



Souvent appelé Golang, Go est un langage de programmation open source, compilé et typé statiquement, créé par Google. Il est conçu pour être facile à comprendre, rapide, clair et performant.

PostgreSQL, souvent simplement appelé Postgres, est un puissant système de base de données relationnelle objet open source. Avec plus de 30 ans de développement actif, il a acquis une solide réputation pour sa robustesse, ses fonctionnalités avancées et sa conformité aux normes substantielles.

Il est conçu pour gérer les charges de travail étendues, des machines uniques aux entrepôts de données ou aux services Web avec de nombreux utilisateurs simultanés. Il offre une intégrité et une durabilité transactionnelles et prend en charge divers types de données avancés et un langage de manipulation de données puissant et flexible.







Ce tutoriel nous apprend à configurer et connecter un serveur PostgreSQL avec une application Go.



Exigences:

Aller au langage de programmation – Il garantit que le compilateur Go est installé sur votre machine.



Base de données PostgreSQL – Vous devez également avoir installé PostgreSQL. Vous pouvez l'installer directement sur votre machine ou utiliser un conteneur Docker pour une configuration plus simple.





Outils de développement – Un environnement de développement intégré (IDE) prenant en charge Go comme Visual Studio Code, GoLand, etc.

Connaissance de base de SQL et Go – Pour interagir avec la base de données PostgreSQL, vous devez comprendre SQL et les différentes requêtes que vous devez effectuer. Vous avez également besoin d'une compréhension de base du langage Go.



Une fois les exigences données remplies, nous pouvons passer aux étapes suivantes.

Configuration du projet

Commençons par configurer la structure de notre répertoire de projet. Créez le répertoire principal dans lequel vous devez stocker le code source du projet.

$ mkdir golang_postgres

Naviguez dans le répertoire et initialisez un nouveau module Go.

$ CD golang_postgres && aller mod init principal

Installez les pilotes requis

Afin d'interagir avec la base de données PostgreSQL, nous avons besoin d'un pilote PostgreSQL pour le langage de programmation Go.

Pour ce tutoriel, nous utilisons le pilote pq qui offre un large éventail de fonctionnalités pour travailler avec la base de données PostgreSQL.

Vous pouvez l'installer en exécutant la commande suivante :

allez chercher github.com / bibliothèque / pq

Créer une base de données

L'étape suivante consiste à créer une nouvelle base de données PostgreSQL. Encore une fois, nous pouvons le faire dans le shell PostgreSQL.

$ psql -DANS postgres

Cette commande vous demande le mot de passe du postgres. Une fois connecté, exécutez la commande 'create database' pour initialiser une nouvelle base de données :

postgres=# créer la base de données golang ;
CRÉER UNE BASE DE DONNÉES

La commande donnée crée une nouvelle base de données appelée 'golang'. N'hésitez pas à remplacer le nom de la base de données par le nom de votre choix.

Vous pouvez ensuite vérifier que la base de données a bien été créée en vous y connectant.

postgres=# \c golang;
Vous êtes maintenant connecté à la base de données 'golang' en tant qu'utilisateur 'postgres'.

Ensuite, configurez la table où vous souhaitez stocker les données. Nous créons une table simple pour ce didacticiel qui stocke les informations de session.

CREATE TABLE db_clients (
id CLÉ PRIMAIRE DE SÉRIE,
nom VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
nombre_de_requêtes INT PAR DÉFAUT 0,
active_state BOOLÉEN PAR DÉFAUT FAUX
);

La requête donnée doit créer une nouvelle table appelée 'db_clients' qui stocke des informations sur les clients connectés à un serveur de base de données donné.

Connecter l'application Go avec PostgreSQL

Une fois que nous avons configuré la base de données et la table de base de données, nous pouvons continuer et apprendre à connecter notre application Go au serveur PostgreSQL.

Commencez par créer un fichier 'main.go' à la racine de votre projet :

$ touche main.go

Ensuite, modifiez le fichier avec l'éditeur de texte de votre choix :

$ parce que main.go

Dans le fichier 'main.go', ajoutez le code source comme indiqué ci-dessous :

paquet principal

importer (
'base de données/sql'
'fmt'
'enregistrer'

_ 'github.com/lib/pq'
)

fonction principale ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Open ( 'postgres' , connStr )
si se tromper ! = nul {
log.Fatal ( se tromper )
}

si err = db.Ping ( ) ; se tromper ! = nul {
log.Fatal ( se tromper )
}

fmt.Println ( 'Connecté à la base de données' )
}

Dans le code précédent, nous commençons par importer les modules requis. Nous définissons ensuite la fonction principale. Enfin, dans la fonction main, nous définissons la chaîne de connexion qui nous permet de spécifier l'hôte cible, l'utilisateur de la base de données, le mot de passe de la base de données et la base de données cible réelle.

Le module prend en charge les paramètres suivants dans la chaîne de connexion :

  • dbname – Le nom de la base de données à laquelle se connecter.
  • user – L'utilisateur sous lequel se connecter.
  • mot de passe – Le mot de passe de l'utilisateur.
  • host – L'hôte auquel se connecter. Les valeurs qui commencent par '/' sont pour les sockets de domaine Unix (la valeur par défaut est localhost).
  • port – Le port auquel se connecter (la valeur par défaut est 5432).
  • sslmode - Utiliser ou non SSL (la valeur par défaut est require ; ce n'est pas la valeur par défaut pour libpq).
  • fallback_application_name - Un nom d'application auquel se rabattre si aucun n'est fourni.
  • connect_timeout – L'attente maximale de connexion en secondes. Zéro ou non spécifié signifie attendre indéfiniment.
  • sslcert – L'emplacement du fichier cert. Le fichier doit contenir les données codées PEM.
  • sslkey – L'emplacement du fichier clé. Le fichier doit contenir les données codées PEM.
  • sslrootcert – L'emplacement du fichier de certificat racine. Le fichier doit contenir les données codées PEM.

Vous pouvez configurer vos propriétés de connexion cible si nécessaire. Pour configurer SSL et les paramètres SSLMode acceptés, consultez notre tutoriel sur https://linuxhint.com/postgres-sslmode .

Une fois satisfait des propriétés de connexion, vous pouvez exécuter le code précédent pour tester si la connexion est établie.

allez courir .\main.go

Lors de la connexion, vous devriez obtenir le résultat suivant :

Connecté à la base de données

PostgreSQL Insérer des données dans la table

L'étape suivante consiste à insérer les exemples de données dans la table que nous avons créée précédemment. Nous pouvons le faire en définissant les requêtes d'insertion en tant que littéral de chaîne, puis en utilisant la fonction db.Exec() pour exécuter la requête cible.

Le code est comme suit:

---
insertStatement := `INSERT INTO db_clients (name, session_time, number_of_queries, active_state)
VALEURS
('psql', '2023-05-26 10:15:00', 10, vrai),
('datagrip', '2023-05-26 09:30:00', 5, vrai),
('dbeaver', '2023-05-26 11:00:00', 20, vrai),
('établi', '2023-05-26 14:45:00', 15, faux),
('distant', '2023-05-26 13:20:00', 8, vrai);`

_, err = db.Exec(insertStatement)
si err != néant {
log. Fatal (erreur)
}

Si vous exécutez le code précédent, il doit insérer les enregistrements spécifiés dans la table cible.

Données de requête PostgreSQL

Pour interroger les lignes de la table, nous pouvons définir l'instruction select en tant que chaîne et utiliser db.Query() pour l'exécuter. Nous pouvons parcourir les lignes du tableau à l'aide de la fonction Next() et les imprimer comme indiqué ci-dessous :

lignes, err := db.Query ( 'SELECT * FROM db_clients' )
si se tromper ! = nul {
log.Fatal ( se tromper )
}
différer les lignes.Fermer ( )

pour lignes.Suivant ( ) {
était identifiant entier
chaîne de nom de var
var sessionTime time.Time
var nombreDeRequêtes int
var activeState bool

err := lignes.Scan ( & identifiant , & nom, & temps de session, & nombreDeRequêtes, & étatactif )
si se tromper ! = nul {
log.Fatal ( se tromper )
}

fmt.Printf ( 'ID : %d, nom : %s, durée de la session : %s, nombre de requêtes : %d, état actif : %t \n ' , identifiant , nom, sessionTime, nombreDeRequêtes, étatactif )
}

si err = lignes.Err ( ) ; se tromper ! = nul {
log.Fatal ( se tromper )
}

Une fois que nous avons exécuté le code précédent, il doit imprimer toutes les lignes de la table db_clients comme indiqué dans l'exemple de sortie suivant :

Voilà!

Conclusion

Nous avons exploré comment utiliser le package pq pour se connecter et interroger la base de données PostgreSQL à l'aide de Golang.