Postgres Golang

Postgres Golang



Često se naziva Golang, Go je programski jezik otvorenog koda, kompajliran i statički upisan, koji je stvorio Google. Napravljen je da bude lako razumljiv, brz, jasan i s visokom izvedbom.

PostgreSQL, koji se često jednostavno naziva Postgres, moćan je objektno-relacijski sustav baze podataka otvorenog koda. S više od 30 godina aktivnog razvoja, stekao je snažnu reputaciju zbog svoje robusnosti, naprednih značajki i značajne usklađenosti sa standardima.

Dizajniran je za rukovanje opsežnim radnim opterećenjima, od pojedinačnih strojeva do skladišta podataka ili web usluga s mnogo istodobnih korisnika. Omogućuje transakcijski integritet i trajnost te podržava razne napredne vrste podataka i moćan, fleksibilan jezik za manipulaciju podacima.







Ovaj vodič nas uči kako konfigurirati i povezati PostgreSQL poslužitelj s Go aplikacijom.



Zahtjevi:

Go programski jezik – Osigurava da je Go kompajler instaliran na vašem računalu.



PostgreSQL baza podataka – Također morate imati instaliran PostgreSQL. Možete ga instalirati izravno na svoje računalo ili koristiti Docker spremnik za jednostavnije postavljanje.





Razvojni alati – Integrirano razvojno okruženje (IDE) koje podržava Go poput Visual Studio Code, GoLand itd.

Osnovno poznavanje SQL-a i Go-a – Za interakciju s PostgreSQL bazom podataka, morate razumjeti SQL i razne upite koje morate izvršiti. Također vam je potrebno osnovno razumijevanje Go jezika.



Kada su zadani zahtjevi ispunjeni, možemo nastaviti sa sljedećim koracima.

Postavljanje projekta

Započnimo s postavljanjem strukture direktorija projekta. Napravite glavni direktorij u koji trebate pohraniti izvorni kod projekta.

$ mkdir golang_postgres

Idite u direktorij i inicijalizirajte novi Go modul.

$ CD golang_postgres && go mod init main

Instalirajte potrebne upravljačke programe

Za interakciju s PostgreSQL bazom podataka potreban nam je PostgreSQL upravljački program za Go programski jezik.

Za ovaj vodič koristimo pq upravljački program koji nudi široku lepezu značajki za rad s PostgreSQL bazom podataka.

Možete ga instalirati pokretanjem sljedeće naredbe:

idi uzmi github.com / lib / pq

Napravite bazu podataka

Sljedeći korak je stvaranje nove PostgreSQL baze podataka. Opet, to možemo učiniti u PostgreSQL ljusci.

$ psql -U postgres

Ova naredba od vas traži lozinku za postgres. Nakon što se prijavite, pokrenite naredbu “create database” da biste inicijalizirali novu bazu podataka:

postgres=# stvoriti golang baze podataka;
STVARANJE BAZE PODATAKA

Dana naredba stvara novu bazu podataka pod nazivom 'golang'. Slobodno zamijenite naziv baze podataka željenim nazivom.

Zatim možete provjeriti je li baza podataka uspješno stvorena povezivanjem s njom.

postgres=# \c golang;
Sada ste povezani s bazom podataka 'golang' kao korisnik 'postgres'.

Zatim postavite tablicu u koju želite pohraniti podatke. Za ovaj vodič stvaramo jednostavnu tablicu koja pohranjuje informacije o sesiji.

CREATE TABLE db_clients (
id SERIJSKI PRIMARNI KLJUČ,
naziv VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
broj_upita INT DEFAULT 0,
aktivno_stanje BOOLEAN DEFAULT FALSE
);

Zadani upit trebao bi stvoriti novu tablicu pod nazivom 'db_clients' koja pohranjuje informacije o klijentima koji su prijavljeni na određeni poslužitelj baze podataka.

Povežite aplikaciju Go s PostgreSQL-om

Nakon što postavimo bazu podataka i tablicu baze podataka, možemo nastaviti i naučiti kako povezati našu Go aplikaciju s PostgreSQL poslužiteljem.

Započnite stvaranjem datoteke 'main.go' u korijenu vašeg projekta:

$ dodir glavni.krenuti

Zatim uredite datoteku pomoću uređivača teksta po izboru:

$ jer glavni.krenuti

U datoteku “main.go” dodajte izvorni kod kao što je prikazano u nastavku:

glavni paket

uvoz (
'baza podataka/sql'
'fmt'
'log'

_ 'github.com/lib/pq'
)

funkcija glavna ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, pogreška := sql.Otvori ( 'postgres' , connStr )
ako pogriješiti ! = nula {
log.Kobno ( pogriješiti )
}

ako pogreška = db.Ping ( ) ; pogriješiti ! = nula {
log.Kobno ( pogriješiti )
}

fmt.Println ( 'Povezano s bazom podataka' )
}

U prethodnom kodu počinjemo s uvozom potrebnih modula. Zatim definiramo glavnu funkciju. Konačno, u glavnoj funkciji definiramo niz povezivanja koji nam omogućuje da navedemo ciljni host, korisnika baze podataka, lozinku baze podataka i stvarnu ciljnu bazu podataka.

Modul podržava sljedeće parametre u nizu veze:

  • dbname – Naziv baze podataka s kojom se povezujete.
  • korisnik – Korisnik za prijavu.
  • lozinka – korisnička lozinka.
  • host – Domaćin s kojim se povezujete. Vrijednosti koje počinju s “/” su za utičnice Unix domene (zadano je localhost).
  • port – Port za povezivanje (zadano je 5432).
  • sslmode – Treba li ili ne koristiti SSL (zadano je zahtijevano; ovo nije zadano za libpq).
  • fallback_application_name – naziv_aplikacije na koji se možete vratiti ako nije naveden.
  • connect_timeout – Maksimalno čekanje na povezivanje u sekundama. Nula ili nije određeno znači čekati neograničeno dugo.
  • sslcert – Lokacija datoteke certifikata. Datoteka mora sadržavati PEM-kodirane podatke.
  • sslkey – Lokacija ključne datoteke. Datoteka mora sadržavati PEM-kodirane podatke.
  • sslrootcert – Lokacija datoteke korijenskog certifikata. Datoteka mora sadržavati PEM-kodirane podatke.

Po potrebi možete konfigurirati svojstva ciljne veze. Za konfiguriranje SSL-a i prihvaćenih SSLMode parametara, pogledajte naš vodič na https://linuxhint.com/postgres-sslmode .

Kada budete zadovoljni svojstvima veze, možete pokrenuti prethodni kod da testirate je li veza uspostavljena.

idi trči .\main.idi

Nakon povezivanja trebali biste dobiti sljedeći izlaz:

Povezan s bazom podataka

PostgreSQL Umetanje podataka u tablicu

Sljedeći korak je umetanje oglednih podataka u tablicu koju smo prethodno izradili. To možemo učiniti tako da definiramo upite za umetanje kao string literal, a zatim upotrijebimo funkciju db.Exec() za pokretanje ciljanog upita.

Kod je sljedeći:

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

_, pogreška = db.Exec(insertStatement)
if err != nula {
log.Fatal(err)
}

Ako pokrenete prethodni kod, on bi trebao umetnuti navedene zapise u ciljnu tablicu.

Podaci upita PostgreSQL

Da bismo postavili upit recima iz tablice, možemo definirati naredbu select kao niz i upotrijebiti db.Query() da je pokrenemo. Možemo iterirati po recima tablice pomoću funkcije Next() i ispisati ih kao što je prikazano u nastavku:

redaka, err := db.Query ( 'SELECT * FROM db_clients' )
ako pogriješiti ! = nula {
log.Kobno ( pogriješiti )
}
odgoditi redove.Zatvori ( )

za redovi.Dalje ( ) {
bio je iskaznica int
niz imena var
var sessionTime vrijeme.Vrijeme
var numberOfQueries int
var activeState bool

pogreška := redovi.Skeniraj ( i iskaznica , i Ime, i vrijeme sesije, i numberOfQueries, i aktivno stanje )
ako pogriješiti ! = nula {
log.Kobno ( pogriješiti )
}

fmt.Printf ( 'ID: %d, naziv: %s, vrijeme sesije: %s, broj upita: %d, aktivno stanje: %t \n ' , iskaznica , ime, vrijeme sesije, broj upita, aktivno stanje )
}

ako err = redovi.Err ( ) ; pogriješiti ! = nula {
log.Kobno ( pogriješiti )
}

Nakon što pokrenemo prethodni kod, trebao bi ispisati sve retke iz tablice db_clients kao što je prikazano u sljedećem primjeru izlaza:

Eto ga!

Zaključak

Istražili smo kako možemo koristiti pq paket za povezivanje i postavljanje upita PostgreSQL bazi podataka koristeći Golang.