Postgres Golang

Postgres Golang



Bieži saukta par Golang, Go ir atvērtā koda, kompilēta un statiski ievadīta programmēšanas valoda, ko izveidojis Google. Tas ir izveidots tā, lai tas būtu viegli saprotams, ātrs, skaidrs un ar augstu veiktspēju.

PostgreSQL, ko bieži dēvē vienkārši par Postgres, ir spēcīga atvērtā koda objektu relāciju datu bāzes sistēma. Vairāk nekā 30 gadus ilgas aktīvas izstrādes laikā tas ir ieguvis spēcīgu reputāciju ar savu robustumu, uzlabotajām funkcijām un ievērojamo atbilstību standartiem.

Tas ir paredzēts, lai apstrādātu lielas darba slodzes, sākot no atsevišķām iekārtām līdz datu noliktavām vai tīmekļa pakalpojumiem ar daudziem vienlaicīgiem lietotājiem. Tas nodrošina darījumu integritāti un izturību un atbalsta dažādus uzlabotus datu tipus un jaudīgu, elastīgu datu manipulācijas valodu.







Šī apmācība mums māca, kā konfigurēt un savienot PostgreSQL serveri ar lietojumprogrammu Go.



Prasības:

Dodieties uz programmēšanas valodu – Tas nodrošina, ka jūsu datorā ir instalēts Go kompilators.



PostgreSQL datu bāze – Jums arī jābūt instalētai PostgreSQL. Varat to instalēt tieši savā iekārtā vai izmantot Docker konteineru vienkāršākai iestatīšanai.





Izstrādes rīki - Integrētā izstrādes vide (IDE), kas atbalsta Go, piemēram, Visual Studio Code, GoLand utt.

Pamatzināšanas par SQL un Go – Lai mijiedarbotos ar PostgreSQL datu bāzi, jums ir jāsaprot SQL un dažādie vaicājumi, kas jums jāveic. Jums ir nepieciešamas arī pamatzināšanas par Go valodu.



Ja ir izpildītas norādītās prasības, mēs varam turpināt tālāk norādītās darbības.

Projekta iestatīšana

Sāksim ar mūsu projektu direktoriju struktūras iestatīšanu. Izveidojiet galveno direktoriju, kurā jāsaglabā projekta avota kods.

$ mkdir golang_postgres

Pārejiet uz direktoriju un inicializējiet jaunu Go moduli.

$ cd golang_postgres && go mod init main

Instalējiet nepieciešamos draiverus

Lai mijiedarbotos ar PostgreSQL datu bāzi, mums ir nepieciešams PostgreSQL draiveris programmēšanas valodai Go.

Šajā apmācībā mēs izmantojam pq draiveri, kas piedāvā plašu funkciju klāstu darbam ar PostgreSQL datu bāzi.

Varat to instalēt, izpildot šādu komandu:

dodieties uz vietni github.com / lib / pq

Izveidojiet datu bāzi

Nākamais solis ir jaunas PostgreSQL datu bāzes izveide. Atkal mēs to varam izdarīt PostgreSQL apvalkā.

$ psql -IN postgres

Šī komanda pieprasa ievadīt postgres paroli. Kad esat pieteicies, palaidiet komandu “izveidot datu bāzi”, lai inicializētu jaunu datu bāzi:

postgres=# izveidot datubāzi golang;
IZVEIDOT DATU BĀZI

Dotā komanda izveido jaunu datu bāzi ar nosaukumu “golang”. Jūtieties brīvi aizstāt datu bāzes nosaukumu ar vēlamo nosaukumu.

Pēc tam varat pārbaudīt, vai datu bāze ir veiksmīgi izveidota, izveidojot tai savienojumu.

postgres=# \c golang;
Tagad esat izveidojis savienojumu ar datubāzi 'golang' kā lietotājs 'postgres'.

Pēc tam iestatiet tabulu, kurā vēlaties saglabāt datus. Mēs izveidojam vienkāršu tabulu šai apmācībai, kurā tiek saglabāta sesijas informācija.

IZVEIDOT TABULU db_clients (
id SERIAL PRIMARY KEY,
nosaukums VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
vaicājumu_skaits INT NOKLUSĒJUMS 0,
active_state BULA NOKLĒJUMS FALSE
);

Dotajam vaicājumam ir jāizveido jauna tabula ar nosaukumu “db_clients”, kurā tiek glabāta informācija par klientiem, kuri ir pieteikušies noteiktā datu bāzes serverī.

Savienojiet lietotni Go ar PostgreSQL

Kad esam iestatījuši datu bāzi un datu bāzes tabulu, mēs varam turpināt un uzzināt, kā savienot lietojumprogrammu Go ar PostgreSQL serveri.

Sāciet, projekta saknē izveidojot failu “main.go”.

$ pieskarties galvenais.go

Pēc tam rediģējiet failu, izmantojot izvēlēto teksta redaktoru:

$ jo galvenais.go

Failā “main.go” pievienojiet avota kodu, kā parādīts tālāk.

galvenā pakete

imports (
'datubāze/sql'
'fmt'
'baļķis'

_ 'github.com/lib/pq'
)

galvenā funkcija ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Open ( 'postgres' , connStr )
ja kļūda ! = nulle {
log.Lentenīgi ( kļūda )
}

ja err = db.Ping ( ) ; kļūda ! = nulle {
log.Lentenīgi ( kļūda )
}

fmt.Println ( 'Savienots ar datu bāzi' )
}

Iepriekšējā kodā mēs sākam ar nepieciešamo moduļu importēšanu. Pēc tam mēs definējam galveno funkciju. Visbeidzot, galvenajā funkcijā mēs definējam savienojuma virkni, kas ļauj norādīt mērķa resursdatoru, datu bāzes lietotāju, datu bāzes paroli un faktisko mērķa datu bāzi.

Modulis savienojuma virknē atbalsta šādus parametrus:

  • dbname — tās datu bāzes nosaukums, ar kuru izveidot savienojumu.
  • lietotājs — lietotājs, kura vārdā jāpierakstās.
  • parole – lietotāja parole.
  • resursdators — saimniekdators, ar kuru izveidot savienojumu. Vērtības, kas sākas ar “/”, ir paredzētas Unix domēna ligzdām (noklusējums ir localhost).
  • ports — ports, ar kuru izveidot saiti (noklusējums ir 5432).
  • sslmode — vai izmantot SSL (noklusējums ir nepieciešams; tas nav noklusējuma libpq).
  • fallback_application_name — lietojumprogrammas_nosaukums, uz kuru jāatgriežas, ja tāds nav norādīts.
  • connect_timeout — maksimālais savienojuma gaidīšanas laiks sekundēs. Nulle vai nenorādīts nozīmē gaidīt bezgalīgi.
  • sslcert — sertifikāta faila atrašanās vieta. Failā ir jābūt PEM kodētiem datiem.
  • sslkey — atslēgas faila atrašanās vieta. Failā ir jābūt PEM kodētiem datiem.
  • sslrootcert — saknes sertifikāta faila atrašanās vieta. Failā ir jābūt PEM kodētiem datiem.

Ja nepieciešams, varat konfigurēt mērķa savienojuma rekvizītus. Lai konfigurētu SSL un pieņemtos SSLMode parametrus, skatiet mūsu apmācību https://linuxhint.com/postgres-sslmode .

Kad esat apmierināts ar savienojuma īpašībām, varat palaist iepriekšējo kodu, lai pārbaudītu, vai savienojums ir izveidots.

ej skriet .\main.go

Savienojot, jums vajadzētu iegūt šādu izvadi:

Savienots ar datu bāzi

PostgreSQL ievieto datus tabulā

Nākamais solis ir datu parauga ievietošana tabulā, kuru izveidojām iepriekš. Mēs to varam izdarīt, definējot ievietošanas vaicājumus kā virknes literālu un pēc tam izmantojot funkciju db.Exec(), lai palaistu mērķa vaicājumu.

Kods ir šāds:

---
insertStatement := `INSERT INTO db_clients (nosaukums, sesijas_laiks, vaicājumu_skaits, aktīvais_stāvoklis)
VĒRTĪBAS
('psql', '2023-05-26 10:15:00', 10, patiess),
('datu ieraksts', '2023-05-26 09:30:00', 5, true),
('dbeaver', '2023-05-26 11:00:00', 20, true),
('darbgalds', '2023-05-26 14:45:00', 15, false),
('tālvadības pults', '2023-05-26 13:20:00', 8, taisnība);`

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

Ja palaižat iepriekšējo kodu, tam ir jāievieto norādītie ieraksti mērķa tabulā.

PostgreSQL vaicājumu dati

Lai vaicātu rindas no tabulas, mēs varam definēt atlases priekšrakstu kā virkni un izmantot db.Query(), lai to palaistu. Mēs varam atkārtot tabulas rindas, izmantojot funkciju Next () un izdrukāt tās, kā parādīts tālāk:

rindas, kļūda := db.Vaicājums ( 'SELECT * FROM db_clients' )
ja kļūda ! = nulle {
log.Lentenīgi ( kļūda )
}
atlikt rindas.Aizvērt ( )

priekš rindas.Tālāk ( ) {
bija id starpt
var nosaukuma virkne
var sessionLaiks laiks.Laiks
var numberOfQueries int
var activeState bool

err := rindas.Skenēt ( & id , & vārds, & sesijas laiks, & vaicājumu skaits, & aktīvais stāvoklis )
ja kļūda ! = nulle {
log.Lentenīgi ( kļūda )
}

fmt.Printf ( 'ID: %d, nosaukums: %s, sesijas laiks: %s, vaicājumu skaits: %d, aktīvais stāvoklis: %t \n ' , id , nosaukums, sesijas laiks, vaicājumu skaits, aktīvais stāvoklis )
}

ja err = rindas.Err ( ) ; kļūda ! = nulle {
log.Lentenīgi ( kļūda )
}

Kad mēs palaižam iepriekšējo kodu, tam vajadzētu izdrukāt visas rindas no tabulas db_clients, kā parādīts šajā izvades piemērā:

Tur jums tas ir!

Secinājums

Mēs izpētījām, kā mēs varam izmantot pq pakotni, lai izveidotu savienojumu ar PostgreSQL datu bāzi un veiktu vaicājumus, izmantojot Golang.