Postgres Golang

Postgres Golang



Dažnai vadinama Golang, Go yra atvirojo kodo, kompiliuojama ir statiškai įvedama programavimo kalba, kurią sukūrė Google. Jis sukurtas taip, kad būtų lengvai suprantamas, greitas, aiškus ir našus.

PostgreSQL, dažnai tiesiog vadinamas Postgres, yra galinga atvirojo kodo objektų ir ryšių duomenų bazių sistema. Daugiau nei 30 metų aktyviai vystantis, jis įgijo tvirtą reputaciją dėl savo tvirtumo, pažangių funkcijų ir esminių standartų laikymosi.

Jis skirtas tvarkyti didelius darbo krūvius – nuo ​​atskirų mašinų iki duomenų saugyklų ar žiniatinklio paslaugų su daugybe vienu metu veikiančių vartotojų. Jis užtikrina operacijų vientisumą ir patvarumą bei palaiko įvairius pažangius duomenų tipus ir galingą, lanksčią duomenų apdorojimo kalbą.







Ši pamoka moko mus, kaip sukonfigūruoti ir prijungti PostgreSQL serverį su programa Go.



Reikalavimai:

Eikite į programavimo kalbą – Tai užtikrina, kad jūsų kompiuteryje būtų įdiegtas „Go“ kompiliatorius.



PostgreSQL duomenų bazė – Taip pat reikia turėti įdiegtą PostgreSQL. Galite įdiegti jį tiesiai į savo kompiuterį arba naudoti Docker konteinerį, kad būtų lengviau nustatyti.





Kūrimo įrankiai - Integruota kūrimo aplinka (IDE), palaikanti Go like Visual Studio Code, GoLand ir kt.

Pagrindinės SQL ir Go žinios – Norėdami sąveikauti su PostgreSQL duomenų baze, turite suprasti SQL ir įvairias užklausas, kurias turite atlikti. Jums taip pat reikia pagrindinių Go kalbos supratimo.



Įvykdę nurodytus reikalavimus, galime pereiti prie šių veiksmų.

Projekto sąranka

Pradėkime nuo projekto katalogo struktūros nustatymo. Sukurkite pagrindinį katalogą, kuriame turite saugoti projekto šaltinio kodą.

$ mkdir golang_postgres

Eikite į katalogą ir inicijuokite naują „Go“ modulį.

$ cd golang_postgres && go mod init main

Įdiekite reikiamas tvarkykles

Kad galėtume sąveikauti su PostgreSQL duomenų baze, mums reikia Go programavimo kalbos PostgreSQL tvarkyklės.

Šioje pamokoje naudojame pq tvarkyklę, kuri siūlo platų funkcijų spektrą darbui su PostgreSQL duomenų baze.

Jį galite įdiegti vykdydami šią komandą:

eik ir gauk github.com / lib / pq

Sukurkite duomenų bazę

Kitas žingsnis – sukurti naują PostgreSQL duomenų bazę. Vėlgi, tai galime padaryti naudodami PostgreSQL apvalkalą.

$ psql -IN postgres

Ši komanda paragins įvesti postgres slaptažodį. Prisijungę paleiskite komandą „sukurti duomenų bazę“, kad inicijuotų naują duomenų bazę:

postgres=# sukurti duomenų bazę golang;
KURTI DUOMENŲ BAZĘ

Pateikta komanda sukuria naują duomenų bazę, pavadintą „golang“. Nedvejodami pakeiskite duomenų bazės pavadinimą norimu pavadinimu.

Tada galite patikrinti, ar duomenų bazė sėkmingai sukurta, prisijungę prie jos.

postgres=# \c golang;
Dabar esate prisijungę prie duomenų bazės 'golang' kaip vartotojas 'postgres'.

Tada nustatykite lentelę, kurioje norite saugoti duomenis. Sukuriame paprastą šios pamokos lentelę, kurioje saugoma seanso informacija.

KURTI LENTELĘ db_clients (
ID SERIAL PRIMARY KEY,
vardas VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
number_of_queries INT NUMATYTOJI 0,
active_state BOLĖS NUMATYTOJI NUSTATYMAS NETINGAS
);

Pateikta užklausa turėtų sukurti naują lentelę, pavadintą „db_clients“, kurioje būtų saugoma informacija apie klientus, kurie yra prisijungę prie nurodyto duomenų bazės serverio.

Prijunkite „Go“ programą su „PostgreSQL“.

Kai nustatysime duomenų bazę ir duomenų bazės lentelę, galime tęsti ir sužinoti, kaip prijungti programą „Go“ su „PostgreSQL“ serveriu.

Pradėkite sukurdami „main.go“ failą savo projekto šaknyje:

$ liesti pagrindinis.go

Tada redaguokite failą pasirinktu teksto redaktoriumi:

$ nes pagrindinis.go

Į „main.go“ failą pridėkite šaltinio kodą, kaip parodyta toliau:

pagrindinis paketas

importuoti (
'duomenų bazė/sql'
'fmt'
'rąstas'

_ 'github.com/lib/pq'
)

pagrindinė funkcija ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Open ( 'postgres' , connStr )
jeigu klysti ! = nulis {
log.Mirtina ( klysti )
}

jeigu err = db.Ping ( ) ; klysti ! = nulis {
log.Mirtina ( klysti )
}

fmt.Println ( 'Prisijungta prie duomenų bazės' )
}

Ankstesniame kode pradedame importuoti reikiamus modulius. Tada apibrėžiame pagrindinę funkciją. Galiausiai pagrindinėje funkcijoje apibrėžiame ryšio eilutę, kuri leidžia nurodyti tikslinį pagrindinį kompiuterį, duomenų bazės vartotoją, duomenų bazės slaptažodį ir tikrąją tikslinę duomenų bazę.

Modulis palaiko šiuos ryšio eilutės parametrus:

  • dbname – duomenų bazės, prie kurios reikia prisijungti, pavadinimas.
  • vartotojas – vartotojas, kuris turi prisijungti kaip.
  • slaptažodis – vartotojo slaptažodis.
  • host – priegloba, prie kurios reikia prisijungti. Reikšmės, prasidedančios raide „/“, yra skirtos „Unix“ domeno lizdams (numatytasis nustatymas yra „localhost“).
  • prievadas – prievadas, prie kurio reikia susieti (numatytasis nustatymas yra 5432).
  • sslmode – ar naudoti SSL, ar ne (numatytasis reikalavimas; tai nėra numatytasis libpq).
  • Falback_application_name – programos_pavadinimas, į kurį reikia grįžti, jei jis nepateiktas.
  • connect_timeout – maksimalus ryšio laukimo laikas sekundėmis. Nulis arba nenurodyta reiškia laukti neribotą laiką.
  • sslcert – sertifikato failo vieta. Faile turi būti PEM koduotų duomenų.
  • sslkey – rakto failo vieta. Faile turi būti PEM koduotų duomenų.
  • sslrootcert – šakninio sertifikato failo vieta. Faile turi būti PEM koduotų duomenų.

Jei reikia, galite konfigūruoti tikslinio ryšio ypatybes. Norėdami sukonfigūruoti SSL ir priimtus SSLMode parametrus, peržiūrėkite mūsų mokymo programą https://linuxhint.com/postgres-sslmode .

Kai būsite patenkinti ryšio savybėmis, galite paleisti ankstesnį kodą, kad patikrintumėte, ar ryšys užmegztas.

eik bėk .\main.go

Prisijungę turėtumėte gauti šią išvestį:

Prisijungta prie duomenų bazės

PostgreSQL įterpti duomenis į lentelę

Kitas žingsnis yra įterpti pavyzdinius duomenis į lentelę, kurią sukūrėme anksčiau. Tai galime padaryti apibrėžę įterpimo užklausas kaip eilutės literalą ir tada naudodami funkciją db.Exec() paleisti tikslinę užklausą.

Kodas yra toks:

---
insertStatement := `INSERT INTO db_clients (pavadinimas, seanso_laikas, užklausų_skaičius, aktyvi_būsena)
VERTYBĖS
('psql', '2023-05-26 10:15:00', 10, tiesa),
('duomenų įrašas', '2023-05-26 09:30:00', 5, tiesa),
(„dbeaver“, „2023-05-26 11:00:00“, 20, tiesa),
(„darbo stalas“, „2023-05-26 14:45:00“, 15, klaidinga),
('nuotolinis', '2023-05-26 13:20:00', 8, tiesa);`

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

Jei paleisite ankstesnį kodą, jis turėtų įterpti nurodytus įrašus į tikslinę lentelę.

PostgreSQL užklausos duomenys

Norėdami pateikti užklausą lentelės eilučių, galime apibrėžti teiginį select kaip eilutę ir naudoti db.Query() jam paleisti. Galime kartoti lentelės eilutes naudodami funkciją Next() ir jas išspausdinti, kaip parodyta toliau:

eilučių, klaida := db.Užklausa ( 'SELECT * FROM db_clients' )
jeigu klysti ! = nulis {
log.Mirtina ( klysti )
}
atidėti eilutes.Uždaryti ( )

dėl eilučių.Kitas ( ) {
buvo id tarpt
var vardo eilutė
var sessionLaikas laikas.Laikas
var numberOfQueries int
var activeState bool

err := eilutės.Nuskaityti ( & id , & vardas, & seanso laikas, & užklausų skaičius, & aktyvi būsena )
jeigu klysti ! = nulis {
log.Mirtina ( klysti )
}

fmt.Printf ( 'ID: %d, pavadinimas: %s, seanso laikas: %s, užklausų skaičius: %d, aktyvi būsena: %t \n , id , pavadinimas, sesijos laikas, užklausų skaičius, aktyvi būsena )
}

jeigu klaida = eilutės. Err ( ) ; klysti ! = nulis {
log.Mirtina ( klysti )
}

Kai paleisime ankstesnį kodą, jis turėtų išspausdinti visas eilutes iš lentelės db_clients, kaip parodyta šiame pavyzdyje:

Štai jūs tai turite!

Išvada

Ištyrėme, kaip galime naudoti pq paketą, kad prisijungtume prie PostgreSQL duomenų bazės ir gautume užklausas naudodami Golang.