Postgres je jednou z populárních databází SQL díky mnoha funkcím a snadnému použití. Postgres je kompatibilní s ACID s funkcemi, jako je Multi-Version Concurrency Control, asynchronní replikace, vnořené transakce a protokolování napřed. Spolu s mnoha dalšími, tyto funkce dělají z Postgresu systém správy SQL databází.
Ekosystém Go je domovem mnoha balíčků pro interakci s různými DBMS, včetně Postgres. Go poskytuje vestavěné databáze/sql balíček pro práci s SQL databázemi pomocí databázových ovladačů. Pomocí datových struktur Go můžete integrovat oblíbené ORM třetích stran, jako je GORM, pro snadnou interakci s vaší databází.
Začínáme s GORM a Postgres
Balíček GORM je jedním z nejoblíbenějších ORM v ekosystému Go, protože je přívětivý pro vývojáře, má bohaté funkce a staví na a databáze/sql balík.
GORM poskytuje funkce pro automatickou migraci, protokolování, připravené výpisy, transakce a sharding. Balíček používá přístup kód na prvním místě pomocí struktur a dalších vestavěných datových typů.
Spusťte tento příkaz terminálu ve svém pracovním adresáři a přidejte balíček GORM do závislostí vašeho projektu:
jít získat gorm.io/gorm\n
Pro práci s balíčkem GORM budete potřebovat ovladač databáze. GORM poskytuje databázové ovladače pro populární DBMS. Spusťte tento příkaz ve svém pracovním adresáři a nainstalujte GORM Postgres Řidič:
jít získat gorm.io/driver/postgres\n
Propojení Postgres s Go pomocí GORM
Importujte tyto balíčky do svého souboru Go, abyste mohli pracovat s ORM a databázovým ovladačem. Budete používat log balíček pro protokolování chyb do vaší konzole a fmt balíček pro tiskový výstup.
import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n
K připojení budete potřebovat připojovací řetězec databáze Postgres v běžícím prostředí. Strukturu můžete použít jako model pro pole, která tvoří připojovací řetězec. Použití struktury usnadňuje změnu a testování různých hodnot, zejména v případech vkládání závislostí.
Zde je příklad modelu struktury pro pole, která tvoří připojovací řetězec:
typ Konfigurace strukturovat {\n Hostitel tětiva\n Port tětiva\n Heslo tětiva\n Uživatel tětiva\n Název DB tětiva\n Režim SSL tětiva\n}\n
Níže je uvedena typická funkce pro připojení k databázi. Vrátí instanci připojení a chybu v závislosti na stavu připojení.
funcNové připojení()(*gorm. DB, chyba) {\n vrátit se db, nula\n}\n
Můžete vytvořit instanci modelu struktury připojení a vyplnit pole hodnotami ve vaší databázi Postgres.
konfigurace := Konfigurace{\n Hostitel: "databázový_hostitel",\n Port: "database_Port",\n Heslo: "heslo_databáze",\n Uživatel: "uživatel_databáze",\n Název DB: "jméno databáze",\n Režim SSL: "Nepravdivé",\n }\n dsn := fmt. Sprintf("host=%s port=%s uživatel=%s heslo=%s dbname=%s sslmode=%s", konfigurace. Hostitel, konfigurace. Port, konfigurace. Uživatel, konfigurace. Heslo, konfigurace. Název DB, konfigurace. SSLMode)\n
The dsn proměnná používá Sprintf způsob formátování a Přejít na formátování sloves řetězce zřetězit pole Konfigurace struct a nastavte připojovací řetězec Postgres.
Databázové spojení s GORM můžete otevřít pomocí OTEVŘENO metoda. The OTEVŘENO metoda přebírá otevřené připojení z ovladače databáze a seznam volitelných konfigurací z Konfigurace typu balíčku GORM. Vrátí instanci připojení a volitelnou chybu.
db, err := gorm. Otevřeno (postgres. Otevřít (dsn), &gorm. Konfigurace{})\n -li chyba!= nula {\n vrátit se db, chyba\n }\n
Ping na databázi pro ověření stavu připojení
Můžete pingnout svou databázi a ověřit stav/online stav pomocí funkce, která vrátí booleovský výsledek nebo chybu, pokud je připojení k databázi neplatné.
funcPingDb()(bool, chyba) {\n \n vrátit seskutečný, nula\n}\n
Pro ping databáze budete muset vytvořit novou instanci připojení. Zde je příklad pomocí Nové připojení funkce pro vytvoření instance připojení:
connectionInstance, err := NewConnection()\n -li chyba!= nula {\n přihlásit se. Fatalf("Připojení k databázi selhalo %v", chyba. Error())\n }\n
Jakmile získáte instanci připojení, vytvořte instanci databáze s DB způsob připojení.
dbConnection, err := connectionInstance. DB()\n -li chyba!= nula {\n vrátit seNepravdivé, chyba\n } \n
Můžete pingnout databázi pomocí Ping metoda instance databáze. The Ping metoda vrací případné chyby popř nula pokud bylo připojení úspěšné.
\n err = dbConnection. Ping()\n -li chyba!= nula {\n vrátit seNepravdivé, chyba\n } jiný {\n \n fmt. Println("Připojení bylo úspěšné")\n }\n
Úspěšné spuštění by mělo vést k výstupu podobnému tomuto:
Balíček database/sql můžete použít k práci s databází SQL v Go
The databáze/sql balíček je rozšiřitelný, a protože většina databázových balíčků a ovladačů Go balíček rozšiřuje, můžete balíček použít ve svých projektech místo toho, abyste se rozhodli pro ORM.
GORM také poskytuje SQL builder pro vytváření raw SQL, což je užitečné pro nepodporované operace.