Postgres Golang

Postgres Golang



Pogosto imenovan Golang, je Go programski jezik, ki je odprtokoden, preveden in statično tipkan, ustvaril pa ga je Google. Zgrajen je tako, da je lahko razumljiv, hiter, jasen in visoko zmogljiv.

PostgreSQL, ki se pogosto preprosto imenuje Postgres, je zmogljiv, odprtokoden objektno-relacijski sistem baze podatkov. Z več kot 30 leti aktivnega razvoja si je pridobil močan sloves zaradi svoje robustnosti, naprednih funkcij in znatne skladnosti s standardi.

Zasnovan je za obvladovanje obsežnih delovnih obremenitev, od posameznih strojev do podatkovnih skladišč ali spletnih storitev z veliko sočasnimi uporabniki. Zagotavlja transakcijsko celovitost in vzdržljivost ter podpira različne napredne tipe podatkov in zmogljiv, prilagodljiv jezik za obdelavo podatkov.







Ta vadnica nas uči, kako konfigurirati in povezati strežnik PostgreSQL z aplikacijo Go.



Zahteve:

Programski jezik Go – Zagotavlja, da je prevajalnik Go nameščen na vašem računalniku.



Baza podatkov PostgreSQL – Prav tako morate imeti nameščen PostgreSQL. Lahko ga namestite neposredno na vaš računalnik ali uporabite vsebnik Docker za enostavnejšo nastavitev.





Razvojna orodja – Integrirano razvojno okolje (IDE), ki podpira Go kot Visual Studio Code, GoLand itd.

Osnovno znanje SQL in Go – Za interakcijo z bazo podatkov PostgreSQL morate razumeti SQL in različne poizvedbe, ki jih morate opraviti. Potrebujete tudi osnovno razumevanje jezika Go.



Ko so dane zahteve izpolnjene, lahko nadaljujemo z naslednjimi koraki.

Nastavitev projekta

Začnimo z nastavitvijo strukture imenika projekta. Ustvarite glavni imenik, kamor morate shraniti izvorno kodo projekta.

$ mkdir golang_postgres

Pomaknite se do imenika in inicializirajte nov modul Go.

$ cd golang_postgres && go mod init main

Namestite zahtevane gonilnike

Za interakcijo z bazo podatkov PostgreSQL potrebujemo gonilnik PostgreSQL za programski jezik Go.

Za to vadnico uporabljamo gonilnik pq, ki ponuja široko paleto funkcij za delo z bazo podatkov PostgreSQL.

Namestite ga lahko tako, da zaženete naslednji ukaz:

pojdite na github.com / lib / pq

Ustvari bazo podatkov

Naslednji korak je ustvariti novo bazo podatkov PostgreSQL. Ponovno lahko to storimo v lupini PostgreSQL.

$ psql -IN postgres

Ta ukaz zahteva geslo za postgres. Ko ste prijavljeni, zaženite ukaz »create database«, da inicializirate novo bazo podatkov:

postgres=# ustvari golang baze podatkov;
USTVARITE BAZO PODATKOV

Podani ukaz ustvari novo zbirko podatkov z imenom »golang«. Ime baze podatkov lahko zamenjate z želenim imenom.

Nato lahko preverite, ali je zbirka podatkov uspešno ustvarjena, tako da se z njo povežete.

postgres=# \c golang;
Zdaj ste povezani z bazo podatkov 'golang' kot uporabnik 'postgres'.

Nato nastavite tabelo, kamor želite shraniti podatke. Za to vadnico ustvarimo preprosto tabelo, ki shranjuje informacije o seji.

CREATE TABLE db_clients (
id SERIJSKI PRIMARNI KLJUČ,
ime VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
število_poizvedb INT PRIVZETO 0,
aktivno_stanje BOOLEAN PRIVZETO FALSE
);

Dana poizvedba bi morala ustvariti novo tabelo z imenom 'db_clients', ki hrani informacije o odjemalcih, ki so prijavljeni v dani strežnik baze podatkov.

Povežite aplikacijo Go s PostgreSQL

Ko nastavimo bazo podatkov in tabelo baze podatkov, lahko nadaljujemo in se naučimo, kako povezati našo aplikacijo Go s strežnikom PostgreSQL.

Začnite z ustvarjanjem datoteke »main.go« v korenu vašega projekta:

$ dotik main.go

Nato uredite datoteko z izbranim urejevalnikom besedil:

$ Ker main.go

V datoteko »main.go« dodajte izvorno kodo, kot je prikazano spodaj:

glavni paket

uvoz (
'baza podatkov/sql'
'fmt'
'dnevnik'

_ 'github.com/lib/pq'
)

glavna funkcija ( ) {
connStr := 'postgres://postgres:geslo@localhost/golang?sslmode=onemogoči'
db, napaka := sql.Open ( 'postgres' , connStr )
če napaka ! = nič {
log.Usodno ( napaka )
}

če napaka = db.Ping ( ) ; napaka ! = nič {
log.Usodno ( napaka )
}

fmt.Println ( 'Povezan z bazo podatkov' )
}

V prejšnji kodi začnemo z uvozom zahtevanih modulov. Nato določimo glavno funkcijo. Končno v glavni funkciji definiramo povezovalni niz, ki nam omogoča, da določimo ciljnega gostitelja, uporabnika baze podatkov, geslo baze podatkov in dejansko ciljno bazo podatkov.

Modul podpira naslednje parametre v povezovalnem nizu:

  • dbname – ime baze podatkov, s katero se želite povezati.
  • uporabnik – Uporabnik, s katerim se boste prijavili.
  • geslo – Geslo uporabnika.
  • gostitelj – gostitelj, s katerim se želite povezati. Vrednosti, ki se začnejo z »/«, so za vtičnice domene Unix (privzeta vrednost je localhost).
  • vrata – vrata za povezovanje (privzeta vrednost je 5432).
  • sslmode – ali uporabiti SSL (privzeto je zahtevano; to ni privzeto za libpq).
  • ime_nadomestne_aplikacije – ime_aplikacije, na katero se lahko vrnete, če ni na voljo.
  • connect_timeout – največje čakanje na povezavo v sekundah. Nič ali ni navedeno pomeni čakanje za nedoločen čas.
  • sslcert – Lokacija datoteke potrdila. Datoteka mora vsebovati podatke, kodirane s PEM.
  • sslkey – ključna lokacija datoteke. Datoteka mora vsebovati podatke, kodirane s PEM.
  • sslrootcert – Lokacija datoteke korenskega potrdila. Datoteka mora vsebovati podatke, kodirane s PEM.

Po potrebi lahko konfigurirate lastnosti ciljne povezave. Če želite konfigurirati SSL in sprejete parametre SSLMode, si oglejte našo vadnico https://linuxhint.com/postgres-sslmode .

Ko ste zadovoljni z lastnostmi povezave, lahko zaženete prejšnjo kodo, da preizkusite, ali je povezava vzpostavljena.

pojdi teči .\main.go

Po povezavi bi morali dobiti naslednji rezultat:

Povezan z bazo podatkov

PostgreSQL Vstavi podatke v tabelo

Naslednji korak je vstavljanje vzorčnih podatkov v tabelo, ki smo jo ustvarili prej. To lahko naredimo tako, da poizvedbe za vstavljanje definiramo kot literal niza in nato uporabimo funkcijo db.Exec() za zagon ciljne poizvedbe.

Koda je naslednja:

---
insertStatement := `INSERT INTO db_clients (ime, session_time, number_of_queries, active_state)
VREDNOTE
('psql', '2023-05-26 10:15:00', 10, res),
('datagrip', '2023-05-26 09:30:00', 5, res),
('dbebever', '2023-05-26 11:00:00', 20, res),
('workbench', '2023-05-26 14:45:00', 15, false),
('oddaljeno', '2023-05-26 13:20:00', 8, res);`

_, napaka = db.Exec(insertStatement)
if err != nil {
log.Fatal(err)
}

Če zaženete prejšnjo kodo, bi morala podane zapise vstaviti v ciljno tabelo.

Podatki poizvedbe PostgreSQL

Za poizvedbo po vrsticah iz tabele lahko definiramo stavek select kot niz in uporabimo db.Query() za njegov zagon. Vrstice tabele lahko ponavljamo s funkcijo Next() in jih natisnemo, kot je prikazano v nadaljevanju:

vrstice, err := db.Query ( 'IZBERI * IZ db_clients' )
če napaka ! = nič {
log.Usodno ( napaka )
}
odloži vrstice. Zapri ( )

za vrstice.Naprej ( ) {
je bil id int
niz imena var
var sessionTime čas.Čas
var numberOfQueries int
var activeState bool

napaka := vrstice.Skeniraj ( & id , & ime, & sessiontime, & numberOfQueries, & activeState )
če napaka ! = nič {
log.Usodno ( napaka )
}

fmt.Printf ( 'ID: %d, ime: %s, čas seje: %s, število poizvedb: %d, aktivno stanje: %t \n ' , id , name, sessionTime, numberOfQueries, activeState )
}

če err = vrstice.Err ( ) ; napaka ! = nič {
log.Usodno ( napaka )
}

Ko zaženemo prejšnjo kodo, bi morala natisniti vse vrstice iz tabele db_clients, kot je prikazano v naslednjem izhodnem primeru:

Tukaj imaš!

Zaključek

Raziskali smo, kako lahko uporabimo paket pq za povezavo in poizvedovanje baze podatkov PostgreSQL z uporabo Golanga.