Postgres Golang

Postgres Golang



Często określany jako Golang, Go to język programowania open-source, skompilowany i statycznie wpisywany, który jest tworzony przez Google. Jest zbudowany tak, aby był łatwy do zrozumienia, szybki, przejrzysty i wydajny.

PostgreSQL, często nazywany po prostu Postgres, to potężny system obiektowo-relacyjnej bazy danych typu open source. Dzięki ponad 30-letniemu aktywnemu rozwojowi zyskał dobrą reputację dzięki solidności, zaawansowanym funkcjom i znacznej zgodności ze standardami.

Jest przeznaczony do obsługi rozległych obciążeń, od pojedynczych maszyn po hurtownie danych lub usługi sieciowe z wieloma jednoczesnymi użytkownikami. Zapewnia integralność i trwałość transakcji oraz obsługuje różne zaawansowane typy danych oraz potężny, elastyczny język manipulacji danymi.







Ten samouczek uczy nas, jak skonfigurować i połączyć serwer PostgreSQL z aplikacją Go.



Wymagania:

Przejdź do języka programowania – Zapewnia, że ​​kompilator Go jest zainstalowany na twoim komputerze.



Baza danych PostgreSQL – Musisz także mieć zainstalowany PostgreSQL. Możesz zainstalować go bezpośrednio na swoim komputerze lub użyć kontenera Docker, aby uzyskać prostszą konfigurację.





Narzędzia programistyczne – Zintegrowane środowisko programistyczne (IDE), które obsługuje Go, takie jak Visual Studio Code, GoLand itp.

Podstawowa znajomość SQL i Go – Aby wchodzić w interakcje z bazą danych PostgreSQL, musisz znać język SQL i różne zapytania, które musisz wykonać. Potrzebna jest również podstawowa znajomość języka Go.



Po spełnieniu podanych wymagań możemy przejść do kolejnych kroków.

Konfiguracja projektu

Zacznijmy od skonfigurowania struktury katalogów naszego projektu. Utwórz główny katalog, w którym chcesz przechowywać kod źródłowy projektu.

$ mkdir golang_postgres

Przejdź do katalogu i zainicjuj nowy moduł Go.

$ płyta CD golang_postgres && przejdź do mod init main

Zainstaluj wymagane sterowniki

Do interakcji z bazą danych PostgreSQL potrzebujemy sterownika PostgreSQL dla języka programowania Go.

W tym samouczku używamy sterownika pq, który oferuje szeroki wachlarz funkcji do pracy z bazą danych PostgreSQL.

Możesz go zainstalować, uruchamiając następujące polecenie:

idź pobierz github.com / lib / pk

Utwórz bazę danych

Kolejnym krokiem jest utworzenie nowej bazy danych PostgreSQL. Ponownie możemy to zrobić w powłoce PostgreSQL.

$ psql -W postgres

To polecenie monituje o podanie hasła do pliku postgres. Po zalogowaniu uruchom polecenie „utwórz bazę danych”, aby zainicjować nową bazę danych:

postgres=# utwórz bazę danych golang;
UTWÓRZ BAZY DANYCH

Podane polecenie tworzy nową bazę danych o nazwie „golang”. Możesz zastąpić nazwę bazy danych żądaną nazwą.

Następnie możesz sprawdzić, czy baza danych została pomyślnie utworzona, łącząc się z nią.

postgres=# \c golang;
Jesteś teraz połączony z bazą danych „golang” jako użytkownik „postgres”.

Następnie skonfiguruj tabelę, w której chcesz przechowywać dane. Na potrzeby tego samouczka tworzymy prostą tabelę, która przechowuje informacje o sesji.

UTWÓRZ TABELĘ db_clients (
id SERYJNY KLUCZ PODSTAWOWY,
nazwa VARCHAR(100) NIE NULL,
session_time TIMESTAMP NOT NULL,
liczba_zapytań INT DOMYŚLNA 0,
stan_aktywności BOOLEAN DOMYŚLNY FAŁSZ
);

Podane zapytanie powinno utworzyć nową tabelę o nazwie „db_clients”, w której przechowywane są informacje o klientach, którzy są zalogowani na danym serwerze bazy danych.

Połącz aplikację Go z PostgreSQL

Po skonfigurowaniu bazy danych i tabeli bazy danych możemy kontynuować i dowiedzieć się, jak połączyć naszą aplikację Go z serwerem PostgreSQL.

Zacznij od utworzenia pliku „main.go” w katalogu głównym projektu:

$ dotykać main.go

Następnie edytuj plik za pomocą wybranego edytora tekstu:

$ ponieważ main.go

W pliku „main.go” dodaj kod źródłowy, jak pokazano poniżej:

Pakiet główny

import (
'baza danych/sql'
'fmt'
'dziennik'

_ „github.com/lib/pq”
)

funkcja główna ( ) {
connStr := 'postgres://postgres:hasło@localhost/golang?sslmode=wyłącz'
db, błąd: = sql.Open ( „postgres” , poł.Str )
Jeśli błądzić ! = zero {
dziennik. Fatalny ( błądzić )
}

Jeśli err = db.Ping ( ) ; błądzić ! = zero {
dziennik. Fatalny ( błądzić )
}

fmt.Println ( „Połączono z bazą danych” )
}

W poprzednim kodzie zaczynamy od zaimportowania wymaganych modułów. Następnie definiujemy główną funkcję. Na koniec w funkcji main definiujemy ciąg połączenia, który pozwala nam określić docelowego hosta, użytkownika bazy danych, hasło do bazy danych i rzeczywistą docelową bazę danych.

Moduł obsługuje następujące parametry w ciągu połączenia:

  • dbname — nazwa bazy danych, z którą ma zostać nawiązane połączenie.
  • użytkownik — użytkownik, który ma się zalogować jako.
  • hasło – Hasło użytkownika.
  • host — host, z którym należy się połączyć. Wartości zaczynające się od „/” dotyczą gniazd domeny Unix (domyślnie jest to host lokalny).
  • port — port do powiązania (domyślnie jest to 5432).
  • sslmode – czy używać SSL, czy nie (wartość domyślna to require; nie jest to wartość domyślna dla libpq).
  • fallback_application_name — Nazwa_aplikacji, do której należy powrócić, jeśli nie została podana.
  • connect_timeout – Maksymalne oczekiwanie na połączenie w sekundach. Zero lub brak określenia oznacza oczekiwanie w nieskończoność.
  • sslcert — lokalizacja pliku certyfikatu. Plik musi zawierać dane zakodowane w formacie PEM.
  • sslkey — lokalizacja pliku klucza. Plik musi zawierać dane zakodowane w formacie PEM.
  • sslrootcert — lokalizacja pliku certyfikatu głównego. Plik musi zawierać dane zakodowane w formacie PEM.

W razie potrzeby można skonfigurować właściwości połączenia docelowego. Aby skonfigurować SSL i akceptowane parametry SSLMode, zapoznaj się z naszym samouczkiem https://linuxhint.com/postgres-sslmode .

Po usatysfakcjonowaniu właściwości połączenia można uruchomić poprzedni kod, aby sprawdzić, czy połączenie zostało nawiązane.

idź uruchom .\main.go

Po połączeniu powinieneś otrzymać następujące dane wyjściowe:

Połączono z bazą danych

PostgreSQL Wstaw dane do tabeli

Następnym krokiem jest wstawienie przykładowych danych do utworzonej wcześniej tabeli. Możemy to zrobić, definiując zapytania wstawiania jako literał łańcuchowy, a następnie użyć funkcji db.Exec() do uruchomienia zapytania docelowego.

Kod jest następujący:

---
insertStatement := `INSERT INTO db_clients (nazwa, czas_sesji, liczba_zapytań, stan_aktywny)
WARTOŚCI
('psql', '2023-05-26 10:15:00', 10, prawda),
('datagrip', '2023-05-26 09:30:00', 5, prawda),
('bóbr', '2023-05-26 11:00:00', 20, prawda),
('stół warsztatowy', '2023-05-26 14:45:00', 15, fałsz),
(„zdalny”, „2023-05-26 13:20:00”, 8, prawda);”

_, błąd = db.Exec(insertStatement)
jeśli błąd!= zero {
log. Fatal (błąd)
}

Jeśli uruchomisz poprzedni kod, powinien on wstawić określone rekordy do tabeli docelowej.

Dane zapytania PostgreSQL

Aby wysłać zapytanie do wierszy z tabeli, możemy zdefiniować instrukcję select jako ciąg znaków i użyć metody db.Query(), aby ją uruchomić. Możemy iterować po wierszach tabeli za pomocą funkcji Next() i wydrukować je, jak pokazano poniżej:

wiersze, błąd: = db.Query ( „WYBIERZ * Z db_clients” )
Jeśli błądzić ! = zero {
dziennik. Fatalny ( błądzić )
}
odrocz wiersze. Zamknij ( )

Do wiersze. Dalej ( ) {
był ID int
ciąg nazwy var
var sesjaCzas czas.Czas
var liczbaZapytań int
var aktywny stan bool

err := wiersze.Skanuj ( & ID , & nazwa, & czas sesji, & liczbaZapytań, & stan aktywny )
Jeśli błądzić ! = zero {
dziennik. Fatalny ( błądzić )
}

fmt.Printf ( „ID: %d, nazwa: %s, czas sesji: %s, liczba zapytań: %d, stan aktywny: %t \N ' , ID , nazwa, czas sesji, liczba zapytań, stan aktywny )
}

Jeśli błąd = wiersze.Błąd ( ) ; błądzić ! = zero {
dziennik. Fatalny ( błądzić )
}

Po uruchomieniu poprzedniego kodu powinien on wydrukować wszystkie wiersze z tabeli db_clients, jak pokazano w poniższym przykładowym wyniku:

Masz to!

Wniosek

Zbadaliśmy, w jaki sposób możemy użyć pakietu pq do łączenia się i wysyłania zapytań do bazy danych PostgreSQL za pomocą Golang.