Postgres Golang

Postgres Golang



Golang, často označovaný ako Golang, je programovací jazyk s otvoreným zdrojom, kompilovaný a staticky napísaný, ktorý vytvorila spoločnosť Google. Je zostavený tak, aby bol ľahko zrozumiteľný, rýchly, jasný a vysoko výkonný.

PostgreSQL, často jednoducho označovaný ako Postgres, je výkonný objektovo-relačný databázový systém s otvoreným zdrojom. S viac ako 30 rokmi aktívneho vývoja si získal silnú povesť pre svoju robustnosť, pokročilé funkcie a zásadný súlad s normami.

Je navrhnutý tak, aby zvládal rozsiahle pracovné zaťaženie, od jednotlivých strojov až po dátové sklady alebo webové služby s mnohými súbežnými používateľmi. Poskytuje transakčnú integritu a trvanlivosť a podporuje rôzne pokročilé typy údajov a výkonný, flexibilný jazyk na manipuláciu s údajmi.







Tento tutoriál nás naučí, ako nakonfigurovať a pripojiť server PostgreSQL s aplikáciou Go.



Požiadavky:

Prejsť na programovací jazyk – Zabezpečuje, aby bol na vašom počítači nainštalovaný kompilátor Go.



PostgreSQL databáza – Musíte mať nainštalovaný aj PostgreSQL. Môžete ho nainštalovať priamo do svojho počítača alebo použiť kontajner Docker pre jednoduchšie nastavenie.





Vývojové nástroje – Integrované vývojové prostredie (IDE), ktoré podporuje Go ako Visual Studio Code, GoLand atď.

Základná znalosť SQL a Go – Aby ste mohli pracovať s databázou PostgreSQL, musíte rozumieť SQL a rôznym dotazom, ktoré musíte vykonať. Potrebujete tiež základné znalosti jazyka Go.



Po splnení daných požiadaviek môžeme pristúpiť k nasledujúcim krokom.

Nastavenie projektu

Začnime nastavením našej projektovej adresárovej štruktúry. Vytvorte hlavný adresár, do ktorého potrebujete uložiť zdrojový kód projektu.

$ mkdir golang_postgres

Prejdite do adresára a inicializujte nový modul Go.

$ cd golang_postgres && prejdite na mod init main

Nainštalujte požadované ovládače

Aby sme mohli komunikovať s databázou PostgreSQL, potrebujeme ovládač PostgreSQL pre programovací jazyk Go.

Pre tento tutoriál používame ovládač pq, ktorý ponúka širokú škálu funkcií na prácu s databázou PostgreSQL.

Môžete ho nainštalovať spustením nasledujúceho príkazu:

prejdite na github.com / lib / pq

Vytvorte databázu

Ďalším krokom je vytvorenie novej databázy PostgreSQL. Opäť to môžeme urobiť v prostredí PostgreSQL.

$ psql -V postgres

Tento príkaz vás vyzve na zadanie hesla postgresu. Po prihlásení spustite príkaz „create database“ na inicializáciu novej databázy:

postgres=# vytvoriť databázu golang;
VYTVORIŤ DATABÁZU

Daný príkaz vytvorí novú databázu s názvom „golang“. Neváhajte nahradiť názov databázy požadovaným názvom.

Potom môžete overiť, či je databáza úspešne vytvorená pripojením k nej.

postgres=# \c golang;
Teraz ste pripojený k databáze „golang“ ako používateľ „postgres“.

Ďalej nastavte tabuľku, do ktorej chcete uložiť údaje. Pre tento tutoriál vytvoríme jednoduchú tabuľku, v ktorej sú uložené informácie o relácii.

CREATE TABLE db_clients (
id SÉRIOVÝ PRIMÁRNY KĽÚČ,
názov VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
number_of_queries INT DEFAULT 0,
active_state BOOLEAN DEFAULT FALSE
);

Daný dotaz by mal vytvoriť novú tabuľku s názvom “db_clients”, ktorá ukladá informácie o klientoch, ktorí sú prihlásení na daný databázový server.

Prepojte aplikáciu Go s PostgreSQL

Po nastavení databázy a databázovej tabuľky môžeme pokračovať a naučiť sa, ako prepojiť našu aplikáciu Go so serverom PostgreSQL.

Začnite vytvorením súboru „main.go“ v koreňovom adresári vášho projektu:

$ dotyk main.go

Potom upravte súbor pomocou textového editora podľa vlastného výberu:

$ pretože main.go

Do súboru „main.go“ pridajte zdrojový kód, ako je znázornené v nasledujúcom texte:

hlavný balík

importovať (
'databáza/sql'
'fmt'
'log'

_ 'github.com/lib/pq'
)

func main ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Open ( 'postgres' , connStr )
ak chybovať ! = nula {
log.Osudný ( chybovať )
}

ak err = db.Ping ( ) ; chybovať ! = nula {
log.Osudný ( chybovať )
}

fmt.Println ( 'Pripojené k databáze' )
}

V predchádzajúcom kóde začneme importovaním požadovaných modulov. Potom definujeme hlavnú funkciu. Nakoniec v hlavnej funkcii definujeme reťazec pripojenia, ktorý nám umožňuje špecifikovať cieľového hostiteľa, používateľa databázy, heslo databázy a skutočnú cieľovú databázu.

Modul podporuje nasledujúce parametre v reťazci pripojenia:

  • dbname – názov databázy, ku ktorej sa chcete pripojiť.
  • používateľ – Používateľ, ktorý sa má prihlásiť ako.
  • heslo – heslo používateľa.
  • hostiteľ – hostiteľ, ku ktorému sa chcete pripojiť. Hodnoty začínajúce znakom „/“ sú pre sokety domény Unix (predvolená hodnota je localhost).
  • port – port, na ktorý sa má viazať (predvolená hodnota je 5432).
  • sslmode – Či sa má použiť SSL alebo nie (predvolené nastavenie je povinné; toto nie je predvolené nastavenie pre libpq).
  • fallback_application_name – názov aplikácie, ku ktorému sa možno vrátiť, ak nie je zadaný.
  • connect_timeout – maximálne čakanie na pripojenie v sekundách. Nula alebo nešpecifikované znamená čakať donekonečna.
  • sslcert – umiestnenie súboru cert. Súbor musí obsahovať dáta kódované PEM.
  • sslkey – umiestnenie súboru kľúča. Súbor musí obsahovať dáta kódované PEM.
  • sslrootcert – Umiestnenie súboru koreňového certifikátu. Súbor musí obsahovať dáta kódované PEM.

Podľa potreby môžete nakonfigurovať vlastnosti cieľového pripojenia. Ak chcete nakonfigurovať SSL a akceptované parametre SSLMode, pozrite si náš návod na https://linuxhint.com/postgres-sslmode .

Keď budete spokojní s vlastnosťami pripojenia, môžete spustiť predchádzajúci kód a otestovať, či je pripojenie vytvorené.

choď spustiť .\main.go

Po pripojení by ste mali získať nasledujúci výstup:

Pripojené k databáze

PostgreSQL Vloženie údajov do tabuľky

Ďalším krokom je vloženie vzorových údajov do tabuľky, ktorú sme vytvorili predtým. Môžeme to urobiť tak, že zadefinujeme vložené dotazy ako reťazcový literál a potom použijeme funkciu db.Exec() na spustenie cieľového dotazu.

Kód je nasledovný:

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

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

Ak spustíte predchádzajúci kód, mal by vložiť zadané záznamy do cieľovej tabuľky.

Údaje dopytu PostgreSQL

Na dopytovanie riadkov z tabuľky môžeme definovať príkaz select ako reťazec a použiť ho na spustenie db.Query(). Môžeme iterovať cez riadky tabuľky pomocou funkcie Next() a vytlačiť ich, ako je znázornené v nasledujúcom texte:

riadky, chyba := db.Query ( 'SELECT * FROM db_clients' )
ak chybovať ! = nula {
log.Osudný ( chybovať )
}
odložiť riadky.Zavrieť ( )

pre riadkov.Ďalej ( ) {
bol id int
reťazec názvu var
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := riadky.Skenovať ( & id , & názov, & sessionTime, & numberOfQueries, & activeState )
ak chybovať ! = nula {
log.Osudný ( chybovať )
}

fmt.Printf ( 'ID: %d, Názov: %s, Čas relácie: %s, Počet dopytov: %d, Aktívny stav: %t \n ' , id , meno, sessionTime, numberOfQueries, activeState )
}

ak err = riadky.Err ( ) ; chybovať ! = nula {
log.Osudný ( chybovať )
}

Keď spustíme predchádzajúci kód, mal by vytlačiť všetky riadky z tabuľky db_clients, ako je znázornené v nasledujúcom príklade výstupu:

Tu to máte!

Záver

Preskúmali sme, ako môžeme použiť balík pq na pripojenie a dopytovanie databázy PostgreSQL pomocou Golang.