Postgres jest jedną z najpopularniejszych baz SQL ze względu na wiele funkcji i łatwość obsługi. Postgres jest zgodny z ACID i oferuje takie funkcje, jak kontrola współbieżności wielu wersji, replikacja asynchroniczna, transakcje zagnieżdżone i rejestrowanie zapisu z wyprzedzeniem. Wraz z wieloma innymi, te funkcje sprawiają, że Postgres jest systemem zarządzania bazami danych SQL.
Ekosystem Go jest domem dla wielu pakietów do interakcji z różnymi systemami DBMS, w tym z Postgres. Go zapewnia wbudowane baza danych/sql pakiet do pracy z bazami danych SQL przy użyciu sterowników baz danych. Korzystając ze struktur danych Go, możesz zintegrować popularne ORM innych firm, takie jak GORM, w celu łatwej interakcji z bazą danych.
Pierwsze kroki z GORM i Postgres
Pakiet GORM jest jednym z najpopularniejszych ORM w ekosystemie Go, ponieważ jest przyjazny dla programistów, bogaty w funkcje i opiera się na the baza danych/sql pakiet.
GORM zapewnia funkcjonalność automatycznych migracji, logowania, przygotowanych wyciągów, transakcji i fragmentacji. Pakiet przyjmuje podejście oparte na pierwszym kodzie, używając struktur i innych wbudowanych typów danych.
Uruchom to polecenie terminala w swoim katalogu roboczym, aby dodać pakiet GORM do zależności swojego projektu:
Iść pobierz gorm.io/gorm\n
Do pracy z pakietem GORM potrzebny będzie sterownik bazy danych. GORM zapewnia sterowniki baz danych dla popularnych DBMS. Uruchom tę komendę w swoim katalogu roboczym, aby zainstalować GORM Postgres kierowca:
Iść pobierz gorm.io/driver/postgres\n
Łączenie Postgres z Go za pomocą GORM
Zaimportuj te pakiety do pliku Go, aby pracować z ORM i sterownikiem bazy danych. Użyjesz dziennik package do rejestrowania błędów w konsoli i pliku fmt pakiet do wydruku.
import (\N "fmt"\N „gorm.io/driver/postgres”\N "gorm.io/gorm"\N "dziennik"\n)\n
Będziesz potrzebować ciągu połączenia, aby połączyć się z twoim Baza danych Postgres w środowisku biegowym. Możesz użyć struktury jako modelu dla pól, które składają się na parametry połączenia. Użycie struktury ułatwia zmianę i testowanie różnych wartości, szczególnie w przypadku wstrzykiwania zależności.
Oto przykładowy model struktury dla pól składających się na parametry połączenia:
typ Konfig struktura {\n Host strunowy\n Port strunowy\nHasło strunowy\n Użytkownik strunowy\n Nazwa DB strunowy\n Tryb SSL strunowy\n}\n
Poniżej przedstawiono typową funkcję dla Twojego połączenia z bazą danych. Zwraca instancję połączenia i błąd w zależności od stanu połączenia.
funkcjaNowePołączenie()(*gorm. DB, błąd) {\N powrót baza danych, zero\n}\n
Możesz utworzyć instancję modelu struktury połączenia i wypełnić pola wartościami z bazy danych Postgres.
konfiguracje := Konfiguracja{\n Host: "Host_bazy_danych",\n Port: "port_bazy_danych",\n Hasło: "hasło_bazy danych",\n Użytkownik: "baza danych_użytkownik",\n Nazwa bazy danych: "nazwa_bazy danych",\n Tryb SSL: "FAŁSZ",\n }\n dsn := fmt. Sprintf("host=%s port=%s użytkownik=%s hasło=%s dbname=%s sslmode=%s", konfiguracje. Gospodarz, konfiguracje. Porty, konfiguracje. Użytkownik, konfiguracje. Hasło, konfiguracje. Nazwa DB, konfiguracje. Tryb SSL)\n
The dsn zmienna używa Sprintf sposób formatowania i Idź czasowniki formatujące łańcuchy do łączenia pól Konfig struct i skonfiguruj ciąg połączenia Postgres.
Możesz otworzyć połączenie z bazą danych z GORM za pomocą otwarty metoda. The otwarty Metoda pobiera otwarte połączenie ze sterownika bazy danych oraz listę opcjonalnych konfiguracji z pliku Konfig rodzaj pakietu GORM. Zwraca instancję połączenia i opcjonalny błąd.
db, błąd:= gorm. Otwórz (postgres. Otwórz (dsn), &gorm. Konfiguracja{})\n Jeśli błąd!= zero {\N powrót db, błąd\n }\n
Pingowanie bazy danych w celu sprawdzenia stanu połączenia
Możesz wysłać polecenie ping do swojej bazy danych, aby zweryfikować kondycję/status online za pomocą funkcji, która zwraca wynik logiczny lub błąd, jeśli połączenie z bazą danych jest nieprawidłowe.
funkcjaPingDb()(bool, błąd) {\n\n powrótPRAWDA, zero\n}\n
Musisz utworzyć nową instancję połączenia, aby wysłać polecenie ping do bazy danych. Oto przykład użycia NowePołączenie funkcja, aby utworzyć instancję połączenia:
connectionInstance, błąd:= NewConnection()\n Jeśli błąd!= zero {\n dziennik. Fatalf(„Połączenie z bazą danych nie powiodło się %v”, błąd. Błąd())\n }\n
Po uzyskaniu instancji połączenia utwórz instancję bazy danych z plikiem DB sposób połączenia.
dbConnection, błąd:= ConnectionInstance. DB()\n Jeśli błąd!= zero {\N powrótFAŁSZ, błąd\n } \n
Możesz pingować bazę danych za pomocą Świst metoda instancji bazy danych. The Świst metoda zwraca wszelkie błędy lub zero czy połączenie się powiodło.
\n błąd = połączenie z bazą danych. Ping()\n Jeśli błąd!= zero {\N powrótFAŁSZ, błąd\n} w przeciwnym razie {\n \n fmt. println("Połączenie powiodło się")\n }\n
Pomyślne uruchomienie powinno dać wynik podobny do tego:
Możesz użyć pakietu database/sql do pracy z bazą danych SQL w Go
The baza danych/sql pakiet można rozszerzyć, a ponieważ większość pakietów baz danych Go i sterowników rozszerza pakiet, możesz używać tego pakietu w swoich projektach zamiast wybierać ORM.
GORM zapewnia również konstruktor SQL do budowania surowego SQL, który jest pomocny w przypadku nieobsługiwanych operacji.