Postgres est l'une des bases de données SQL les plus populaires en raison de ses nombreuses fonctionnalités et de sa facilité d'utilisation. Postgres est conforme à ACID avec des fonctionnalités telles que le contrôle de la concurrence multi-versions, la réplication asynchrone, les transactions imbriquées et la journalisation en écriture anticipée. Avec bien d'autres, ces fonctionnalités font de Postgres le système de gestion de base de données SQL incontournable.
L'écosystème Go abrite de nombreux packages permettant d'interagir avec divers SGBD, y compris Postgres. Go fournit la fonction intégrée base de données/sql package pour travailler avec des bases de données SQL à l'aide de pilotes de base de données. En utilisant les structures de données Go, vous pouvez intégrer des ORM tiers populaires comme GORM pour une interaction facile avec votre base de données.
Premiers pas avec GORM et Postgres
Le pack GORM est l'un des ORM les plus populaires de l'écosystème Go car il est convivial pour les développeurs, riche en fonctionnalités et s'appuie sur le base de données/sql emballer.
GORM fournit des fonctionnalités pour les migrations automatiques, la journalisation, les instructions préparées, les transactions et le partitionnement. Le package adopte l'approche du code d'abord en utilisant des structures et d'autres types de données intégrés.
Exécutez cette commande de terminal dans votre répertoire de travail pour ajouter le package GORM aux dépendances de votre projet :
aller obtenir gorm.io/gorm\n
Vous aurez besoin d'un pilote de base de données pour utiliser le package GORM. GORM fournit des pilotes de base de données pour les SGBD populaires. Exécutez cette commande dans votre répertoire de travail pour installer le GORM postgres conducteur:
aller obtenir gorm.io/driver/postgres\n
Connecter Postgres avec Go à l'aide de GORM
Importez ces packages dans votre fichier Go pour travailler avec l'ORM et le pilote de base de données. Vous utiliserez le enregistrer package pour consigner les erreurs dans votre console et le fmt package pour imprimer la sortie.
importer (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "enregistrer"\n)\n
Vous aurez besoin d'une chaîne de connexion pour vous connecter à votre Base de données Postgres dans l'environnement de course. Vous pouvez utiliser une structure comme modèle pour les champs qui composent la chaîne de connexion. L'utilisation d'une structure facilite la modification et le test de différentes valeurs, en particulier dans les cas d'injection de dépendances.
Voici un exemple de modèle de structure pour les champs qui composent la chaîne de connexion :
taper Configuration structure {\n Hôte chaîne\n Port chaîne\n Mot de passe chaîne\n Utilisateur chaîne\n NomDB chaîne\n Mode SSL chaîne\n}\n
Vous trouverez ci-dessous une fonction typique pour votre connexion à la base de données. Il renvoie l'instance de connexion et une erreur en fonction de l'état de la connexion.
fonctionNouvelleConnexion()(*gorm. DB, erreur) {\n retour db, néant\n}\n
Vous pouvez instancier le modèle de structure de connexion et remplir les champs avec les valeurs de votre base de données Postgres.
configurations := Config{\n Hôte: "database_Host",\nPort: "port_base_de_données",\n Mot de passe: "database_Password",\n Utilisateur: "database_User",\n NomDB: "nom de la base de données",\n Mode SSL: "FAUX",\n }\n dsn := fmt. Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", configurations. Hébergeur, configurations. Port, configurations. Utilisateur, configurations. Mot de passe, configurations. NomDB, configurations. mode SSL)\n
Le DSN variable utilise la Sprintf méthode de formatage et Go verbes de formatage de chaîne pour concaténer les champs du Configuration struct et configurez la chaîne de connexion Postgres.
Vous pouvez ouvrir une connexion à une base de données avec GORM en utilisant le Ouvrir méthode. Le Ouvrir prend en compte une connexion ouverte à partir d'un pilote de base de données et une liste de configurations facultatives à partir du Configuration type du package GORM. Il renvoie une instance de connexion et une erreur facultative.
db, err := gorm. Ouvert (postgres. Ouvert (dsn), &gorm. Configuration{})\n si erreur != néant {\n retour bd, erreur\n }\n
Envoyer un ping à la base de données pour vérifier l'état de la connexion
Vous pouvez envoyer un ping à votre base de données pour vérifier l'état de santé/en ligne avec une fonction qui renvoie un résultat booléen ou une erreur si la connexion à la base de données n'est pas valide.
fonctionPingDb()(bourdonner, erreur) {\n \n retourvrai, néant\n}\n
Vous devrez créer une nouvelle instance de connexion pour envoyer un ping à la base de données. Voici un exemple utilisant le NouvelleConnexion fonction pour créer une instance de connexion :
connectionInstance, err := NewConnection()\n si erreur != néant {\n journal. Fatalf("La connexion à la base de données a échoué %v", euh. Erreur())\n }\n
Une fois que vous avez obtenu une instance de connexion, créez une instance de base de données avec le BD mode de connexion.
dbConnection, err := connectionInstance. BD()\n si erreur != néant {\n retourFAUX, erreur\n } \n
Vous pouvez envoyer un ping à la base de données avec le Ping méthode de l'instance de base de données. Le Ping méthode renvoie toutes les erreurs ou néant si la connexion a réussi.
\n err = dbConnection. Ping()\n si erreur != néant {\n retourFAUX, euh\n } autre {\n \n fin. Imprimerln("La connexion a réussi")\n }\n
Une exécution réussie devrait aboutir à une sortie semblable à celle-ci :
Vous pouvez utiliser le package database/sql pour travailler avec la base de données SQL dans Go
Le base de données/sql Le package est extensible, et comme la plupart des packages et des pilotes de base de données Go étendent le package, vous pouvez utiliser le package dans vos projets au lieu d'opter pour les ORM.
GORM fournit également un générateur SQL pour créer du SQL brut, ce qui est utile pour les opérations non prises en charge.