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_postgresIdite u direktorij i inicijalizirajte novi Go modul.
$ CD golang_postgres && go mod init mainInstalirajte 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 / pqNapravite bazu podataka
Sljedeći korak je stvaranje nove PostgreSQL baze podataka. Opet, to možemo učiniti u PostgreSQL ljusci.
$ psql -U postgresOva 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.krenutiZatim uredite datoteku pomoću uređivača teksta po izboru:
$ jer glavni.krenutiU datoteku “main.go” dodajte izvorni kod kao što je prikazano u nastavku:
glavni paketuvoz (
'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.idiNakon povezivanja trebali biste dobiti sljedeći izlaz:
Povezan s bazom podatakaPostgreSQL 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.