Postgres er en av de populære SQL-databasene på grunn av dens mange funksjoner og brukervennlighet. Postgres er ACID-kompatibel med funksjoner som Multi-Version Concurrency Control, asynkron replikering, nestede transaksjoner og fremskrivningslogging. Sammen med mange andre gjør disse funksjonene Postgres til SQL-databasestyringssystemet.
Go-økosystemet er hjemsted for mange pakker for samhandling med ulike DBMS, inkludert Postgres. Go gir den innebygde database/sql pakke for arbeid med SQL-databaser ved hjelp av databasedrivere. Ved å bruke Go-datastrukturer kan du integrere populære tredjeparts ORM-er som GORM for enkel interaksjon med databasen din.
Komme i gang med GORM og Postgres
GORM-pakken er en av de mest populære ORM-ene i Go-økosystemet fordi den er utviklervennlig, funksjonsrik og bygger på de database/sql pakke.
GORM gir funksjonalitet for automatiske migreringer, logging, forberedte uttalelser, transaksjoner og skjæring. Pakken tar koden først tilnærmingen ved å bruke strukturer og andre innebygde datatyper.
Kjør denne terminalkommandoen i arbeidskatalogen din for å legge til GORM-pakken til prosjektets avhengigheter:
gå skaff deg gorm.io/gorm\n
Du trenger en databasedriver for å fungere GORM-pakken. GORM tilbyr databasedrivere for populære DBMS. Kjør denne kommandoen i arbeidskatalogen din for å installere GORM Postgres sjåfør:
gå skaff deg gorm.io/driver/postgres\n
Koble til Postgres med Go ved å bruke GORM
Importer disse pakkene til Go-filen for å jobbe med ORM- og databasedriveren. Du vil bruke Logg pakken for å logge feil til konsollen og fmt pakke for å skrive ut.
import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "Logg"\n)\n
Du trenger en tilkoblingsstreng for å koble til din Postgres database i løpemiljøet. Du kan bruke en struct som modell for feltene som utgjør koblingsstrengen. Å bruke en struktur gjør det lettere å endre og teste ulike verdier, spesielt i tilfeller av avhengighetsinjeksjon.
Her er et eksempel på en strukturmodell for feltene som utgjør tilkoblingsstrengen:
type Konfig struktur {\n Vert streng\n Port streng\n Passord streng\n Bruker streng\n DBnavn streng\n SSLMode streng\n}\n
Nedenfor er en typisk funksjon for databasetilkoblingen. Den returnerer tilkoblingsforekomsten og en feil avhengig av tilkoblingsstatusen.
funcNy tilkobling()(*gorm. DB, feil) {\n komme tilbake db, null\n}\n
Du kan instansiere tilkoblingsstrukturmodellen og fylle feltene med verdiene i Postgres-databasen.
konfigurasjoner := Config{\n Vert: "database_vert",\n Port: "database_Port",\n Passord: "database_Password",\n Bruker: "database_bruker",\n DBnavn: "database_Name",\n SSLMode: "falsk",\n }\n dsn := fmt. Sprintf("host=%s port=%s bruker=%s passord=%s dbname=%s sslmode=%s", konfigurasjoner. Vert, konfigurasjoner. Port, konfigurasjoner. Bruker, konfigurasjoner. Passord, konfigurasjoner. DBnavn, konfigurasjoner. SSLMode)\n
De dsn variabelen bruker Sprintf formateringsmetode og Gå til strengformatering av verb å sette sammen feltene til Konfig struct og sett opp Postgres-tilkoblingsstrengen.
Du kan åpne en databaseforbindelse med GORM ved å bruke Åpen metode. De Åpen metoden tar inn en åpen tilkobling fra en databasedriver og en liste over valgfrie konfigurasjoner fra Konfig type GORM-pakken. Den returnerer en tilkoblingsforekomst og en valgfri feil.
db, feil := gorm. Åpen (postgres. Åpne (dsn), &gorm. Konfigurer{})\n hvis feil!= null {\n komme tilbake db, feil\n }\n
Pinger databasen for å bekrefte tilkoblingsstatusen
Du kan pinge databasen din for å verifisere helse/online-statusen med en funksjon som returnerer et boolsk resultat eller en feil hvis databasetilkoblingen er ugyldig.
funcPingDb()(bool, feil) {\n \n komme tilbakeekte, null\n}\n
Du må opprette en ny tilkoblingsforekomst for å pinge databasen. Her er et eksempel som bruker Ny tilkobling funksjon for å opprette en tilkoblingsforekomst:
connectionInstance, err := NewConnection()\n hvis feil!= null {\n logg. Fatalf("Databasetilkoblingen mislyktes %v", feil. Feil())\n }\n
Når du har fått en tilkoblingsforekomst, oppretter du en databaseforekomst med DB metoden for tilkoblingen.
dbConnection, feil := forbindelsesinstans. DB()\n hvis feil!= null {\n komme tilbakefalsk, feil\n } \n
Du kan pinge databasen med Ping metoden for databaseforekomsten. De Ping metoden returnerer eventuelle feil eller null hvis tilkoblingen var vellykket.
\n feil = dbConnection. Ping()\n hvis feil!= null {\n komme tilbakefalsk, feil\n } ellers {\n \n fmt. Println("Tilkoblingen var vellykket")\n }\n
En vellykket kjøring bør resultere i utdata som ligner på dette:
Du kan bruke databasen/sql-pakken til å jobbe med SQL-databasen i Go
De database/sql pakken kan utvides, og siden de fleste Go-databasepakker og -drivere utvider pakken, kan du bruke pakken i prosjektene dine i stedet for å velge ORM.
GORM tilbyr også en SQL-bygger for å bygge rå SQL, som er nyttig for operasjoner som ikke støttes.