Postgres er en af de populære SQL-databaser på grund af dens mange funktioner og brugervenlighed. Postgres er ACID-kompatibel med funktioner som Multi-Version Concurrency Control, asynkron replikering, indlejrede transaktioner og fremskrivningslogning. Sammen med mange andre gør disse funktioner Postgres til det bedste SQL-databasestyringssystem.
Go-økosystemet er hjemsted for mange pakker til interaktion med forskellige DBMS, inklusive Postgres. Go giver det indbyggede database/sql pakke til at arbejde med SQL-databaser ved hjælp af databasedrivere. Ved at bruge Go-datastrukturer kan du integrere populære tredjeparts ORM'er som GORM for nem interaktion med din database.
Kom godt i gang med GORM og Postgres
GORM-pakken er en af de mest populære ORM'er i Go-økosystemet, fordi den er udviklervenlig, funktionsrig og bygger på det database/sql pakke.
GORM leverer funktionalitet til automatiske migreringer, logning, forberedte erklæringer, transaktioner og sharding. Pakken tager den kode-første tilgang ved hjælp af strukturer og andre indbyggede datatyper.
Kør denne terminalkommando i dit arbejdsbibliotek for at tilføje GORM-pakken til dit projekts afhængigheder:
gå hent gorm.io/gorm\n
Du skal bruge en databasedriver for at arbejde med GORM-pakken. GORM leverer databasedrivere til populære DBMS. Kør denne kommando i din arbejdsmappe for at installere GORM Postgres chauffør:
gå hent gorm.io/driver/postgres\n
Tilslutning af Postgres med Go ved hjælp af GORM
Importer disse pakker i din Go-fil for at arbejde med ORM- og databasedriveren. Du vil bruge log pakke til at logge fejl til din konsol og fmt pakke til udskrift.
importere (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n
Du skal bruge en forbindelsesstreng for at oprette forbindelse til din Postgres database i løbemiljøet. Du kan bruge en struct som model for de felter, der udgør forbindelsesstrengen. Brug af en struct gør det lettere at ændre og teste forskellige værdier, især i tilfælde af afhængighedsinjektion.
Her er et eksempel på en strukturmodel for de felter, der udgør forbindelsesstrengen:
type Konfig struktur {\n Vært snor\n Port snor\n Adgangskode snor\n Bruger snor\n DBnavn snor\n SSLMode snor\n}\n
Nedenfor er en typisk funktion for din databaseforbindelse. Det returnerer forbindelsesforekomsten og en fejl afhængigt af forbindelsesstatus.
funcNy forbindelse()(*gorm. DB, fejl) {\n Vend tilbage db, nul\n}\n
Du kan instansiere forbindelsesstrukturmodellen og udfylde felterne med værdierne i din Postgres-database.
konfigurationer := Konfig{\n Vært: "database_vært",\n Port: "database_Port",\n Adgangskode: "database_Password",\n Bruger: "database_Bruger",\n DBnavn: "databasenavn",\n SSLMode: "falsk",\n }\n dsn := fmt. Sprintf("host=%s port=%s bruger=%s adgangskode=%s dbname=%s sslmode=%s", konfigurationer. Vært, konfigurationer. Port, konfigurationer. Bruger, konfigurationer. Adgangskode, konfigurationer. DBnavn, konfigurationer. SSLMode)\n
Det dsn variabel bruger Sprintf formateringsmetode og Gå til strengformatering af verber at sammenkæde felterne af Konfig struct og opsæt Postgres-forbindelsesstrengen.
Du kan åbne en databaseforbindelse med GORM ved hjælp af Åben metode. Det Åben metoden tager en åben forbindelse fra en databasedriver og en liste over valgfrie konfigurationer fra Konfig type af GORM-pakken. Det returnerer en forbindelsesforekomst og en valgfri fejl.
db, fejl := gorm. Åben (postgres. Åbn (dsn), &gorm. Konfig{})\n hvis fejl!= nul {\n Vend tilbage db, fejl\n }\n
Pinger databasen for at bekræfte forbindelsesstatus
Du kan pinge din database for at bekræfte sundheds-/onlinestatus med en funktion, der returnerer et boolesk resultat eller en fejl, hvis databaseforbindelsen er ugyldig.
funcPingDb()(bool, fejl) {\n \n Vend tilbagerigtigt, nul\n}\n
Du skal oprette en ny forbindelsesinstans for at pinge databasen. Her er et eksempel ved hjælp af Ny forbindelse funktion til at oprette en forbindelsesforekomst:
connectionInstance, fejl := NewConnection()\n hvis fejl!= nul {\n log. Fatalf("Databaseforbindelsen mislykkedes %v", fejl. Fejl())\n }\n
Når du har fået en forbindelsesforekomst, skal du oprette en databaseforekomst med DB metoden til forbindelsen.
dbConnection, fejl := forbindelsesinstans. DB()\n hvis fejl!= nul {\n Vend tilbagefalsk, fejl\n } \n
Du kan pinge databasen med Ping metoden for databaseinstansen. Det Ping metode returnerer eventuelle fejl eller nul hvis forbindelsen lykkedes.
\n fejl = dbForbindelse. Ping()\n hvis fejl!= nul {\n Vend tilbagefalsk, fejl\n } andet {\n \n fmt. Println("Forbindelsen lykkedes")\n }\n
En vellykket kørsel bør resultere i output svarende til dette:
Du kan bruge databasen/sql-pakken til at arbejde med SQL-databasen i Go
Det database/sql pakken kan udvides, og da de fleste Go-databasepakker og -drivere udvider pakken, kan du bruge pakken i dine projekter i stedet for at vælge ORM'er.
GORM leverer også en SQL-builder til at bygge rå SQL, hvilket er nyttigt til ikke-understøttede operationer.