Postgres Golang

Postgres Golang



Často označovaný jako Golang, Go je programovací jazyk s otevřeným zdrojovým kódem, kompilovaný a staticky typovaný, který je vytvořen společností Google. Je vytvořen tak, aby byl snadno pochopitelný, rychlý, jasný a vysoce výkonný.

PostgreSQL, často jednoduše označovaný jako Postgres, je výkonný objektově relační databázový systém s otevřeným zdrojovým kódem. S více než 30 lety aktivního vývoje si získal silnou reputaci pro svou robustnost, pokročilé funkce a zásadní shodu se standardy.

Je navržen tak, aby zvládl rozsáhlou pracovní zátěž, od jednotlivých strojů po datové sklady nebo webové služby s mnoha souběžnými uživateli. Poskytuje transakční integritu a trvanlivost a podporuje různé pokročilé datové typy a výkonný, flexibilní jazyk pro manipulaci s daty.







Tento tutoriál nás naučí, jak nakonfigurovat a propojit server PostgreSQL s aplikací Go.



Požadavky:

Přejít na programovací jazyk – Zajistí, že je na vašem počítači nainstalován kompilátor Go.



PostgreSQL databáze – Musíte mít také nainstalovaný PostgreSQL. Můžete jej nainstalovat přímo do počítače nebo použít kontejner Docker pro jednodušší nastavení.





Vývojové nástroje – Integrované vývojové prostředí (IDE), které podporuje Go jako Visual Studio Code, GoLand atd.

Základní znalost SQL a Go – Abyste mohli pracovat s databází PostgreSQL, musíte rozumět SQL a různým dotazům, které musíte provést. Potřebujete také základní znalost jazyka Go.



Po splnění daných požadavků můžeme přistoupit k následujícím krokům.

Nastavení projektu

Začněme nastavením naší projektové adresářové struktury. Vytvořte hlavní adresář, kam potřebujete uložit zdrojový kód projektu.

$ mkdir golang_postgres

Přejděte do adresáře a inicializujte nový modul Go.

$ CD golang_postgres && přejděte do modu init main

Nainstalujte požadované ovladače

Abychom mohli komunikovat s databází PostgreSQL, potřebujeme ovladač PostgreSQL pro programovací jazyk Go.

V tomto tutoriálu používáme ovladač pq, který nabízí širokou škálu funkcí pro práci s databází PostgreSQL.

Můžete jej nainstalovat spuštěním následujícího příkazu:

přejděte na github.com / lib / pq

Vytvořte databázi

Dalším krokem je vytvoření nové PostgreSQL databáze. Opět to můžeme udělat v prostředí PostgreSQL.

$ psql -V postgres

Tento příkaz vás vyzve k zadání hesla postgresu. Po přihlášení spusťte příkaz „create database“ pro inicializaci nové databáze:

postgres=# vytvořit databázi golang;
VYTVOŘIT DATABÁZI

Daný příkaz vytvoří novou databázi s názvem „golang“. Neváhejte nahradit název databáze vámi požadovaným názvem.

Úspěšně vytvořenou databázi pak můžete ověřit připojením k ní.

postgres=# \c golang;
Nyní jste připojeni k databázi 'golang' jako uživatel 'postgres'.

Dále nastavte tabulku, kam chcete data uložit. Pro tento tutoriál vytvoříme jednoduchou tabulku, která ukládá informace o relaci.

CREATE TABLE db_clients (
id SÉRIOVÝ PRIMÁRNÍ KLÍČ,
jméno VARCHAR(100) NOT NULL,
session_time TIMESTAMP NOT NULL,
počet_dotazů INT DEFAULT 0,
active_state BOOLEAN DEFAULT FALSE
);

Daný dotaz by měl vytvořit novou tabulku nazvanou „db_clients“, která uchovává informace o klientech přihlášených na daný databázový server.

Propojte aplikaci Go s PostgreSQL

Jakmile nastavíme databázi a databázovou tabulku, můžeme pokračovat a naučit se, jak propojit naši aplikaci Go se serverem PostgreSQL.

Začněte vytvořením souboru „main.go“ v kořenovém adresáři vašeho projektu:

$ dotek main.go

Dále upravte soubor pomocí textového editoru podle vašeho výběru:

$ protože main.go

Do souboru „main.go“ přidejte zdrojový kód, jak je znázorněno v následujícím:

hlavní balíček

import (
'databáze/sql'
'fmt'
'log'

_ 'github.com/lib/pq'
)

func main ( ) {
connStr := 'postgres://postgres:password@localhost/golang?sslmode=disable'
db, err := sql.Otevřít ( 'postgres' , connStr )
-li chybovat ! = nula {
log.Osudný ( chybovat )
}

-li err = db.Ping ( ) ; chybovat ! = nula {
log.Osudný ( chybovat )
}

fmt.Println ( 'Připojeno k databázi' )
}

V předchozím kódu začneme importem požadovaných modulů. Poté definujeme hlavní funkci. Nakonec v hlavní funkci definujeme připojovací řetězec, který nám umožňuje specifikovat cílového hostitele, uživatele databáze, heslo databáze a skutečnou cílovou databázi.

Modul podporuje následující parametry v připojovacím řetězci:

  • dbname – Název databáze, ke které se chcete připojit.
  • uživatel – uživatel, který se má přihlásit.
  • heslo – heslo uživatele.
  • hostitel – hostitel, ke kterému se chcete připojit. Hodnoty začínající „/“ jsou pro sokety domény Unix (výchozí je localhost).
  • port – Port, na který se má navázat (výchozí hodnota je 5432).
  • sslmode – Zda se má či nemá používat SSL (výchozí nastavení je požadováno; toto není výchozí nastavení pro libpq).
  • fallback_application_name – název_aplikace, ke kterému se lze vrátit, pokud není zadán.
  • connect_timeout – Maximální čekání na připojení v sekundách. Nula nebo neuvedeno znamená čekat donekonečna.
  • sslcert – umístění souboru cert. Soubor musí obsahovat data kódovaná PEM.
  • sslkey – umístění souboru klíče. Soubor musí obsahovat data kódovaná PEM.
  • sslrootcert – Umístění souboru kořenového certifikátu. Soubor musí obsahovat data kódovaná PEM.

Podle potřeby můžete nakonfigurovat vlastnosti cílového připojení. Chcete-li nakonfigurovat SSL a přijímané parametry SSLMode, podívejte se na náš tutoriál https://linuxhint.com/postgres-sslmode .

Jakmile budete spokojeni s vlastnostmi připojení, můžete spustit předchozí kód a otestovat, zda je připojení navázáno.

běž spustit .\main.go

Po připojení byste měli získat následující výstup:

Připojeno k databázi

PostgreSQL Vložit data do tabulky

Dalším krokem je vložení ukázkových dat do tabulky, kterou jsme vytvořili dříve. Můžeme to udělat tak, že definujeme vkládací dotazy jako řetězcový literál a pak použijeme funkci db.Exec() ke spuštění cílového dotazu.

Kód je následující:

---
insertStatement := `INSERT INTO db_clients (název, čas_relace, počet_dotazů, aktivní_stav)
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)
}

Pokud spustíte předchozí kód, měl by vložit zadané záznamy do cílové tabulky.

Data dotazů PostgreSQL

K dotazu na řádky z tabulky můžeme definovat příkaz select jako řetězec a použít db.Query() k jeho spuštění. Řádky tabulky můžeme iterovat pomocí funkce Next() a vytisknout je, jak je znázorněno v následujícím:

řádky, err := db.Query ( 'SELECT * FROM db_clients' )
-li chybovat ! = nula {
log.Osudný ( chybovat )
}
odložit řádky.Zavřít ( )

pro řádky.Další ( ) {
byl id int
řetězec názvu var
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := řádky.Skenovat ( & id , & název, & sessionTime, & numberOfQueries, & aktivní stav )
-li chybovat ! = nula {
log.Osudný ( chybovat )
}

fmt.Printf ( 'ID: %d, Název: %s, Čas relace: %s, Počet dotazů: %d, Aktivní stav: %t \n ' , id , jméno, sessionTime, numberOfQueries, activeState )
}

-li err = řádky.Err ( ) ; chybovat ! = nula {
log.Osudný ( chybovat )
}

Jakmile spustíme předchozí kód, měl by vytisknout všechny řádky z tabulky db_clients, jak je znázorněno v následujícím příkladu výstupu:

Tady to máš!

Závěr

Zkoumali jsme, jak můžeme použít balíček pq k připojení a dotazování databáze PostgreSQL pomocí Golang.