Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

Postgres este una dintre bazele de date SQL populare datorită numeroaselor sale caracteristici și ușurinței de utilizare. Postgres este compatibil cu ACID cu funcții precum Controlul concurenței în mai multe versiuni, replicarea asincronă, tranzacțiile imbricate și înregistrarea în scris înainte. Alături de multe altele, aceste caracteristici fac din Postgres sistemul de gestionare a bazelor de date SQL de bază.

Ecosistemul Go găzduiește multe pachete pentru interacțiunea cu diverse DBMS, inclusiv Postgres. Go oferă sistemul încorporat baza de date/sql pachet pentru lucrul cu baze de date SQL folosind drivere de baze de date. Folosind structurile de date Go, puteți integra ORM-uri populare de la terți, cum ar fi GORM, pentru o interacțiune ușoară cu baza de date.

Noțiuni introductive cu GORM și Postgres

Pachetul GORM

instagram viewer
este unul dintre cele mai populare ORM-uri din ecosistemul Go, deoarece este prietenos pentru dezvoltatori, bogat în funcții și se bazează pe cel baza de date/sql pachet.

GORM oferă funcționalități pentru migrarea automată, înregistrarea în jurnal, extrasele pregătite, tranzacțiile și fragmentarea. Pachetul adoptă o abordare bazată pe cod, folosind structuri și alte tipuri de date încorporate.

Rulați această comandă de terminal în directorul dvs. de lucru pentru a adăuga pachetul GORM la dependențele proiectului dvs.:

merge obține gorm.io/gorm\n

Veți avea nevoie de un driver de bază de date pentru a funcționa cu pachetul GORM. GORM oferă drivere de bază de date pentru DBMS populare. Rulați această comandă în directorul dvs. de lucru pentru a instala GORM Postgres conducător auto:

merge obține gorm.io/driver/postgres\n

Conectarea Postgres cu Go folosind GORM

Importați aceste pachete în fișierul Go pentru a lucra cu ORM și driverul bazei de date. Veți folosi Buturuga pachet pentru a înregistra erorile în consola dvs. și în fmt pachet pentru a imprima rezultatul.

import (\n "fmt"\n „gorm.io/driver/postgres”\n „gorm.io/gorm”\n "Buturuga"\n)\n

Veți avea nevoie de un șir de conexiune pentru a vă conecta la dvs Baza de date Postgres în mediul de rulare. Puteți utiliza o structură ca model pentru câmpurile care alcătuiesc șirul de conexiune. Utilizarea unei structuri facilitează modificarea și testarea diferitelor valori, mai ales în cazurile de injectare a dependenței.

Iată un exemplu de model de structură pentru câmpurile care alcătuiesc șirul de conexiune:

tip Config struct {\n Gazdă şir\n Port şir\n Parolă şir\n Utilizator şir\n DBName şir\n SSLMode şir\n}\n

Mai jos este o funcție tipică pentru conexiunea la baza de date. Returnează instanța conexiunii și o eroare în funcție de starea conexiunii.

funcNewConnection()(*gorm. DB, eroare) {\n întoarcere db, zero\n}\n

Puteți instanția modelul structurii de conexiune și puteți completa câmpurile cu valorile din baza de date Postgres.

 configurații := Config{\n Gazdă: "database_Host",\n Port: "database_Port",\n Parolă: "database_Password",\n Utilizator: "database_User",\n Nume DB: "numele bazei de date",\n SSLMode: "fals",\n }\n dsn := fmt. Sprintf(„gazdă=%s port=%s utilizator=%s parolă=%s dbname=%s sslmode=%s”, configurații. Gazdă, configurații. Port, configurații. Utilizator, configurații. Parolă, configurații. DBName, configurații. SSLMode)\n

The dsn variabila folosește Sprintf metoda de formatare şi Go string formatare verbe pentru a concatena câmpurile ale Config struct și configurați șirul de conexiune Postgres.

Puteți deschide o conexiune la baza de date cu GORM utilizând Deschis metodă. The Deschis metoda preia o conexiune deschisă dintr-un driver de bază de date și o listă de configurații opționale din Config tipul pachetului GORM. Returnează o instanță de conexiune și o eroare opțională.

 db, err := gorm. Deschis (postgres. Deschide (dsn), &gorm. Configurare{})\n dacă greș!= zero {\n întoarcere db, err\n }\n

Faceți ping la baza de date pentru a verifica starea conexiunii

Puteți trimite ping la baza de date pentru a verifica starea de sănătate/online cu o funcție care returnează un rezultat boolean sau o eroare dacă conexiunea la baza de date este invalidă.

funcPingDb()(bool, eroare) {\n \n întoarcereAdevărat, zero\n}\n

Va trebui să creați o nouă instanță de conexiune pentru a face ping la baza de date. Iată un exemplu folosind NewConnection funcție pentru a crea o instanță de conexiune:

 connectionInstance, err := NewConnection()\n dacă greș!= zero {\n jurnal. Fatalf(„Conexiunea la baza de date a eșuat %v”, greșeală. Eroare())\n }\n

După ce ați obținut o instanță de conexiune, creați o instanță de bază de date cu DB metoda de conectare.

 dbConnection, err := connectionInstance. DB()\n dacă greș!= zero {\n întoarcerefals, greșit\n } \n

Puteți face ping la baza de date cu Ping metoda instanței bazei de date. The Ping metoda returnează orice erori sau zero dacă conexiunea a avut succes.

\n err = dbConnection. Ping()\n dacă greș!= zero {\n întoarcerefals, greșit\n } altfel {\n \n fmt. Println(„Conexiunea a avut succes”)\n }\n

O rulare cu succes ar trebui să aibă rezultate similare cu aceasta:

Puteți utiliza baza de date/pachetul SQL pentru a lucra cu baza de date SQL în Go

The baza de date/sql pachetul este extensibil și, deoarece majoritatea pachetelor și driverelor de baze de date Go extind pachetul, puteți utiliza pachetul în proiectele dvs. în loc să optați pentru ORM-uri.

GORM oferă, de asemenea, un constructor SQL pentru construirea SQL brut, care este util pentru operațiuni neacceptate.