Postgres Golang

Postgres Golang



Ofte omtalt som Golang, Go er et programmeringssprog, der er open source, kompileret og statisk skrevet, som er skabt af Google. Den er bygget til at være let at forstå, hurtig, klar og højtydende.

PostgreSQL, ofte blot omtalt som Postgres, er et kraftfuldt, open source objektrelationelt databasesystem. Med mere end 30 års aktiv udvikling har den fået et stærkt ry for sin robusthed, avancerede funktioner og betydelige standarder.

Den er designet til at håndtere de omfattende arbejdsbyrder, fra enkelte maskiner til datavarehuse eller webtjenester med mange samtidige brugere. Det giver transaktionsintegritet og holdbarhed og understøtter forskellige avancerede datatyper og kraftfuldt, fleksibelt datamanipulationssprog.







Denne vejledning lærer os, hvordan man konfigurerer og forbinder en PostgreSQL-server med en Go-applikation.



Krav:

Gå til programmeringssprog – Det sikrer, at Go-kompileren er installeret på din maskine.



PostgreSQL-database – Du skal også have PostgreSQL installeret. Du kan installere det direkte på din maskine eller bruge en Docker-beholder til en mere ligetil opsætning.





Udviklingsværktøjer – Et integreret udviklingsmiljø (IDE), der understøtter Go som Visual Studio Code, GoLand osv.

Grundlæggende kendskab til SQL og Go – For at interagere med PostgreSQL-databasen skal du forstå SQL og de forskellige forespørgsler, du skal udføre. Du skal også have en grundlæggende forståelse af Go-sproget.



Med de givne krav opfyldt, kan vi gå videre til følgende trin.

Projektopsætning

Lad os starte med at opsætte vores projektmappestruktur. Opret hovedbiblioteket, hvor du skal gemme projektets kildekode.

$ mkdir golang_postgres

Naviger ind i mappen og initialiser et nyt Go-modul.

$ cd golang_postgres && go mod init main

Installer de nødvendige drivere

For at kunne interagere med PostgreSQL-databasen har vi brug for en PostgreSQL-driver til Go-programmeringssproget.

Til denne øvelse bruger vi pq-driveren, som tilbyder en bred vifte af funktioner til at arbejde med PostgreSQL-databasen.

Du kan installere det ved at køre følgende kommando:

gå hen til github.com / lib / pq

Opret en database

Det næste trin er at oprette en ny PostgreSQL-database. Igen kan vi gøre dette i PostgreSQL-skallen.

$ psql -I postgres

Denne kommando beder dig om adgangskoden til postgres. Når du er logget, skal du køre kommandoen 'create database' for at initialisere en ny database:

postgres=# opret database golang;
OPRET DATABASE

Den givne kommando opretter en ny database kaldet 'golang'. Du er velkommen til at erstatte databasenavnet med dit ønskede navn.

Du kan derefter bekræfte, at databasen er oprettet korrekt ved at oprette forbindelse til den.

postgres=# \c golang;
Du er nu forbundet til databasen 'golang' som bruger 'postgres'.

Opsæt derefter tabellen, hvor du ønsker at gemme dataene. Vi opretter en simpel tabel til denne øvelse, der gemmer sessionsoplysningerne.

OPRET TABEL db_clients (
id SERIEPRIMÆR NØGLE,
navn VARCHAR(100) IKKE NULL,
session_time TIMESTAMP IKKE NULL,
antal_forespørgsler INT DEFAULT 0,
active_state BOOLEAN STANDARD FALSK
);

Den givne forespørgsel skal oprette en ny tabel kaldet 'db_clients', der gemmer en information om de klienter, der er logget ind på en given databaseserver.

Forbind Go-appen med PostgreSQL

Når vi har opsat databasen og databasetabellen, kan vi fortsætte og lære at forbinde vores Go-applikation med PostgreSQL-serveren.

Start med at oprette en 'main.go' fil i roden af ​​dit projekt:

$ røre ved main.go

Rediger derefter filen med din valgte teksteditor:

$ fordi main.go

I filen 'main.go' skal du tilføje kildekoden som vist i følgende:

hovedpakke

importere (
'database/sql'
'fmt'
'log'

_ 'github.com/lib/pq'
)

func hoved ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, fejl := sql.Åben ( 'postgres' , connStr )
hvis fejl ! = nul {
log.Fatal ( fejl )
}

hvis fejl = db.Ping ( ) ; fejl ! = nul {
log.Fatal ( fejl )
}

fmt.Println ( 'Forbundet til database' )
}

I den forrige kode starter vi med at importere de nødvendige moduler. Derefter definerer vi hovedfunktionen. Til sidst, i hovedfunktionen, definerer vi forbindelsesstrengen, som giver os mulighed for at angive målværten, databasebrugeren, databaseadgangskoden og den faktiske måldatabase.

Modulet understøtter følgende parametre i forbindelsesstrengen:

  • dbname – Navnet på den database, der skal oprettes forbindelse til.
  • bruger – Brugeren, der skal logges ind som.
  • password – Brugerens adgangskode.
  • vært – Værten, der skal oprettes forbindelse til. Værdierne, der starter med '/' er for Unix-domæne-sockets (standarden er localhost).
  • port – Porten, der skal bindes til (standarden er 5432).
  • sslmode – Om SSL skal bruges eller ej (standarden er påkrævet; dette er ikke standarden for libpq).
  • fallback_application_name – Et application_name at falde tilbage til, hvis der ikke er angivet et.
  • connect_timeout – Den maksimale ventetid på forbindelse i sekunder. Nul eller ikke specificeret betyder at vente på ubestemt tid.
  • sslcert – Cert-filens placering. Filen skal indeholde de PEM-kodede data.
  • sslkey – Nøglefilens placering. Filen skal indeholde de PEM-kodede data.
  • sslrootcert – Placeringen af ​​rodcertifikatfilen. Filen skal indeholde de PEM-kodede data.

Du kan konfigurere dine målforbindelsesegenskaber efter behov. For at konfigurere SSL og de accepterede SSLMode-parametre, tjek vores tutorial på https://linuxhint.com/postgres-sslmode .

Når du er tilfreds med forbindelsesegenskaberne, kan du køre den forrige kode for at teste, om forbindelsen er etableret.

gå løb .\main.go

Ved tilslutning bør du få følgende output:

Forbundet til database

PostgreSQL Indsæt data i tabellen

Det næste trin er at indsætte eksempeldataene i tabellen, som vi oprettede tidligere. Vi kan gøre dette ved at definere insert-forespørgslerne som en streng-literal og derefter bruge funktionen db.Exec() til at køre målforespørgslen.

Koden er som følger:

---
insertStatement := `INSERT INTO db_clients (navn, session_tid, antal_forespørgsler, aktiv_tilstand)
VÆRDIER
('psql', '2023-05-26 10:15:00', 10, sand),
('datagrip', '2023-05-26 09:30:00', 5, sandt),
('dbeaver', '2023-05-26 11:00:00', 20, sandt),
('arbejdsbænk', '2023-05-26 14:45:00', 15, falsk),
('fjernbetjening', '2023-05-26 13:20:00', 8, sand);'

_, fejl = db.Exec(insertStatement)
hvis fejl != nul {
log.Fatal(err)
}

Hvis du kører den forrige kode, skal den indsætte de angivne poster i måltabellen.

PostgreSQL-forespørgselsdata

For at forespørge rækkerne fra tabellen kan vi definere select-sætningen som en streng og bruge db.Query() til at køre den. Vi kan iterere over tabelrækkerne ved hjælp af Next()-funktionen og udskrive dem som vist i følgende:

rækker, fejl := db.Forespørgsel ( 'VÆLG * FRA db_clients' )
hvis fejl ! = nul {
log.Fatal ( fejl )
}
udskyde rækker. Luk ( )

til rækker.Næste ( ) {
var id int
var navnestreng
        var sessionTime time.Time
var numberOfQueries int
var activeState bool

fejl := rækker.Scan ( & id , & navn, & sessionstid, & numberOfQueries, & aktiv tilstand )
hvis fejl ! = nul {
log.Fatal ( fejl )
}

fmt.Printf ( 'ID: %d, Navn: %s, Sessionstid: %s, Antal forespørgsler: %d, Aktiv tilstand: %t \n ' , id , navn, sessionTime, numberOfQueries, activeState )
}

hvis fejl = rækker.Err ( ) ; fejl ! = nul {
log.Fatal ( fejl )
}

Når vi har kørt den forrige kode, skal den udskrive alle rækkerne fra tabellen db_clients som vist i følgende eksempeloutput:

Der har du det!

Konklusion

Vi undersøgte, hvordan vi kan bruge pq-pakken til at forbinde og forespørge PostgreSQL-databasen ved hjælp af Golang.