Postgres Golang

Postgres Golang



Deseori denumit Golang, Go este un limbaj de programare care este open-source, compilat și scris static, care este creat de Google. Este conceput pentru a fi ușor de înțeles, rapid, clar și performant.

PostgreSQL, adesea denumit pur și simplu Postgres, este un sistem de baze de date puternic, open-source, relațional cu obiecte. Cu mai mult de 30 de ani de dezvoltare activă, a câștigat o reputație puternică pentru robustețea, caracteristicile avansate și conformitatea substanțială cu standardele.

Este conceput pentru a gestiona sarcinile extinse de lucru, de la mașini unice la depozite de date sau servicii web cu mulți utilizatori concurenți. Oferă integritate și durabilitate tranzacțională și acceptă diverse tipuri de date avansate și un limbaj puternic și flexibil de manipulare a datelor.







Acest tutorial ne învață cum să configuram și să conectăm un server PostgreSQL cu o aplicație Go.



Cerințe:

Accesați limbajul de programare – Se asigură că compilatorul Go este instalat pe computer.



Baza de date PostgreSQL – De asemenea, trebuie să aveți instalat PostgreSQL. Puteți să-l instalați direct pe computer sau să utilizați un container Docker pentru o configurare mai simplă.





Instrumente de dezvoltare – Un mediu de dezvoltare integrat (IDE) care acceptă Go precum Visual Studio Code, GoLand etc.

Cunoștințe de bază despre SQL și Go – Pentru a interacționa cu baza de date PostgreSQL, trebuie să înțelegeți SQL și diferitele interogări pe care trebuie să le efectuați. De asemenea, aveți nevoie de o înțelegere de bază a limbajului Go.



Cu cerințele date îndeplinite, putem trece la următorii pași.

Configurarea proiectului

Să începem prin a configura structura directorului de proiect. Creați directorul principal în care trebuie să stocați codul sursă al proiectului.

$ mkdir golang_postgres

Navigați în director și inițializați un nou modul Go.

$ CD golang_postgres && du-te mod init main

Instalați driverele necesare

Pentru a interacționa cu baza de date PostgreSQL, avem nevoie de un driver PostgreSQL pentru limbajul de programare Go.

Pentru acest tutorial, folosim driverul pq care oferă o gamă largă de caracteristici pentru a lucra cu baza de date PostgreSQL.

Îl puteți instala rulând următoarea comandă:

du-te la github.com / lib / pq

Creați o bază de date

Următorul pas este crearea unei noi baze de date PostgreSQL. Din nou, putem face acest lucru în shell-ul PostgreSQL.

$ psql -ÎN postgres

Această comandă vă solicită parola postgresului. Odată conectat, rulați comanda „creare bază de date” pentru a inițializa o nouă bază de date:

postgres=# crează baza de date golang;
CREAȚI BAZĂ DE DATE

Comanda dată creează o nouă bază de date numită „golang”. Simțiți-vă liber să înlocuiți numele bazei de date cu numele dorit.

Apoi puteți verifica dacă baza de date este creată cu succes conectându-vă la ea.

postgres=# \c golang;
Acum sunteți conectat la baza de date „golang” ca utilizator „postgres”.

Apoi, configurați tabelul în care doriți să stocați datele. Creăm un tabel simplu pentru acest tutorial care stochează informațiile despre sesiune.

CREATE TABLE db_clients (
id CHEIE PRIMARĂ DE SERIE,
nume VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
număr_de_interogări INT DEFAULT 0,
active_state BOOLEAN DEFAULT FALSE
);

Interogarea dată ar trebui să creeze un nou tabel numit „db_clients” care stochează informații despre clienții care sunt conectați la un server de bază de date dat.

Conectați aplicația Go cu PostgreSQL

Odată ce am configurat baza de date și tabelul bazei de date, putem continua și învățam cum să conectăm aplicația noastră Go cu serverul PostgreSQL.

Începeți prin a crea un fișier „main.go” în rădăcina proiectului dvs.:

$ atingere principal.go

Apoi, editați fișierul cu editorul de text dorit:

$ deoarece principal.go

În fișierul „main.go”, adăugați codul sursă așa cum se arată în continuare:

pachet principal

import (
'baza de date/sql'
'fmt'
'Buturuga'

_ „github.com/lib/pq”
)

func principal ( ) {
connStr := „postgres://postgres:parola@localhost/golang?sslmode=disable”
db, err := sql.Open ( 'postgres' , connStr )
dacă a greșit ! = zero {
log.Fatal ( a greșit )
}

dacă err = db.Ping ( ) ; a greșit ! = zero {
log.Fatal ( a greșit )
}

fmt.Println ( „Conectat la baza de date” )
}

În codul anterior, începem prin a importa modulele necesare. Definim apoi funcția principală. În cele din urmă, în funcția principală, definim șirul de conexiune care ne permite să specificăm gazda țintă, utilizatorul bazei de date, parola bazei de date și baza de date țintă reală.

Modulul acceptă următorii parametri în șirul de conexiune:

  • dbname – Numele bazei de date la care se conectează.
  • utilizator – Utilizatorul cu care se conectează.
  • parola – parola utilizatorului.
  • gazdă – gazda la care să se conecteze. Valorile care încep cu „/” sunt pentru socketurile de domeniu Unix (prestabilit este localhost).
  • port – Portul la care să vă legați (valorul implicit este 5432).
  • sslmode – Dacă se utilizează sau nu SSL (prestabilit este require; acesta nu este implicit pentru libpq).
  • fallback_application_name – Un nume_aplicație la care să reveniți dacă nu este furnizat unul.
  • connect_timeout – așteptarea maximă pentru conexiune în secunde. Zero sau nespecificat înseamnă să așteptați la infinit.
  • sslcert – Locația fișierului cert. Fișierul trebuie să conțină datele codificate PEM.
  • sslkey – Locația fișierului cheie. Fișierul trebuie să conțină datele codificate PEM.
  • sslrootcert – Locația fișierului certificatului rădăcină. Fișierul trebuie să conțină datele codificate PEM.

Puteți configura proprietățile conexiunii țintă după cum este necesar. Pentru a configura SSL și parametrii SSLMode acceptați, consultați tutorialul nostru https://linuxhint.com/postgres-sslmode .

Odată mulțumit de proprietățile conexiunii, puteți rula codul anterior pentru a testa dacă conexiunea este stabilită.

du-te fugi .\main.go

La conectare, ar trebui să obțineți următoarea ieșire:

Conectat la baza de date

PostgreSQL Inserați date în tabel

Următorul pas este să inserăm datele eșantionului în tabelul pe care l-am creat mai devreme. Putem face acest lucru definind interogările de inserare ca un șir literal și apoi folosim funcția db.Exec() pentru a rula interogarea țintă.

Codul este următorul:

---
insertStatement := `INSERT INTO db_clients (nume, sesiune_time, number_of_queries, active_state)
VALORI
(„psql”, „2023-05-26 10:15:00”, 10, adevărat),
(„datagrip”, „2023-05-26 09:30:00”, 5, adevărat),
(„dbeaver”, „2023-05-26 11:00:00”, 20, adevărat),
(„workbench”, „2023-05-26 14:45:00”, 15, fals),
(„la distanță”, „2023-05-26 13:20:00”, 8, adevărat);`

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

Dacă rulați codul anterior, acesta ar trebui să insereze înregistrările specificate în tabelul țintă.

Date de interogare PostgreSQL

Pentru a interoga rândurile din tabel, putem defini instrucțiunea select ca șir și folosim db.Query() pentru ao rula. Putem itera peste rândurile tabelului folosind funcția Next() și le putem tipări așa cum se arată în continuare:

rânduri, err := db.Query ( „SELECT * FROM db_clients” )
dacă a greșit ! = zero {
log.Fatal ( a greșit )
}
amână rândurile.Închide ( )

pentru rânduri.În continuare ( ) {
a fost id int
var nume șir
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := rânduri.Scanare ( & id , & Nume, & sesiune, & numberOfQueries, & activeState )
dacă a greșit ! = zero {
log.Fatal ( a greșit )
}

fmt.Printf ( „ID: %d, Nume: %s, Durata sesiunii: %s, Număr de interogări: %d, Stare activă: %t \n ' , id , name, sessionTime, numberOfQueries, activeState )
}

dacă err = rânduri.Err ( ) ; a greșit ! = zero {
log.Fatal ( a greșit )
}

Odată ce rulăm codul anterior, ar trebui să imprime toate rândurile din tabelul db_clients, așa cum se arată în următorul exemplu de ieșire:

Iată-l!

Concluzie

Am explorat cum putem folosi pachetul pq pentru a conecta și a interoga baza de date PostgreSQL folosind Golang.