Anslut till en Postgres-databas i din Go-applikation med GORM

Anslut till en Postgres-databas i din Go-applikation med GORM
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Postgres är en av de populära SQL-databaserna på grund av dess många funktioner och användarvänlighet. Postgres är ACID-kompatibel med funktioner som Multi-Version Concurrency Control, asynkron replikering, kapslade transaktioner och skrivningsloggning. Tillsammans med många andra gör dessa funktioner Postgres till det bästa SQL-databashanteringssystemet.





Go-ekosystemet är hem för många paket för interaktion med olika DBMS, inklusive Postgres. Go tillhandahåller den inbyggda databas/sql paket för att arbeta med SQL-databaser med databasdrivrutiner. Med hjälp av Go-datastrukturer kan du integrera populära ORM från tredje part som GORM för enkel interaktion med din databas.





Komma igång med GORM och Postgres

  GORMs hemsida

GORM-paketet är en av de mest populära ORM:erna i Go-ekosystemet eftersom den är utvecklarvänlig, funktionsrik och bygger på de databas/sql paket .





windows server 2016 vs windows 10

GORM tillhandahåller funktionalitet för automatiska migrering, loggning, förberedda uttalanden, transaktioner och sönderdelning. Paketet tar koden först med hjälp av strukturer och andra inbyggda datatyper.

Kör detta terminalkommando i din arbetskatalog för att lägga till GORM-paketet till ditt projekts beroenden:



 go get gorm.io/gorm\n

Du behöver en databasdrivrutin för att arbeta med GORM-paketet. GORM tillhandahåller databasdrivrutiner för populära DBMS. Kör det här kommandot i din arbetskatalog för att installera GORM Postgres förare:

 go get gorm.io/driver/postgres\n

Ansluta Postgres med Go med GORM

Importera dessa paket i din Go-fil för att arbeta med ORM- och databasdrivrutinen. Du kommer att använda logga paket för att logga fel till din konsol och fmt paket för utskrift.





 import (\n "fmt"\n "gorm.io/driver/postgres"\n "gorm.io/gorm"\n "log"\n)\n

Du behöver en anslutningssträng för att ansluta till din Postgres databas i löparmiljön. Du kan använda en struct som modell för fälten som utgör anslutningssträngen. Att använda en struct gör det lättare att ändra och testa olika värden, speciellt i fall av beroendeinjektion.

Här är ett exempel på en strukturmodell för fälten som utgör anslutningssträngen:





 type Config struct {\n Host string\n Port string\n Password string\n User string\n DBName string\n SSLMode string\n}\n

Nedan finns en typisk funktion för din databasanslutning. Den returnerar anslutningsinstansen och ett fel beroende på anslutningsstatus.

 func NewConnection() (*gorm.DB, error) {\n return db, nil\n}\n

Du kan instansiera anslutningsstrukturmodellen och fylla fälten med värdena i din Postgres-databas.

     configurations := Config{\n Host: "database_Host",\n Port: "database_Port",\n Password: "database_Password",\n User: "database_User",\n DBName: "database_Name",\n SSLMode: "false",\n }\n dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", configurations.Host, configurations.Port, configurations.User, configurations.Password, configurations.DBName, configurations.SSLMode)\n

De dsn variabeln använder Sprintf formateringsmetod och Gå strängformatera verb att sammanfoga fälten av Konfig struct och ställ in Postgres-anslutningssträngen.

Du kan öppna en databasanslutning med GORM med hjälp av Öppen metod. De Öppen metoden tar in en öppen anslutning från en databasdrivrutin och en lista över valfria konfigurationer från Konfig typ av GORM-paketet. Den returnerar en anslutningsinstans och ett valfritt fel.

     db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})\n if err != nil {\n return db, err\n }\n

Pingar databasen för att verifiera anslutningsstatus

Du kan pinga din databas för att verifiera hälso-/onlinestatusen med en funktion som returnerar ett booleskt resultat eller ett fel om databasanslutningen är ogiltig.

 func PingDb() (bool, error) {\n \n return true, nil\n}\n

Du måste skapa en ny anslutningsinstans för att pinga databasen. Här är ett exempel med hjälp av Ny anslutning funktion för att skapa en anslutningsinstans:

     connectionInstance, err := NewConnection()\n if err != nil {\n log.Fatalf("The database connection failed %v", err.Error())\n }\n

När du har fått en anslutningsinstans skapar du en databasinstans med DB anslutningssätt.

     dbConnection, err := connectionInstance.DB()\n if err != nil {\n return false, err\n } \n

Du kan pinga databasen med Ping metod för databasinstansen. De Ping metod returnerar eventuella fel eller noll om anslutningen lyckades.

 \n err = dbConnection.Ping()\n if err != nil {\n return false, err\n } else {\n \n fmt.Println("The connection was successful")\n }\n

En framgångsrik körning bör resultera i utdata som liknar detta:

  lyckad anslutningsutgång

Du kan använda databasen/sql-paketet för att arbeta med SQL Database i Go

De databas/sql paketet kan utökas, och eftersom de flesta Go-databaspaket och drivrutiner utökar paketet, kan du använda paketet i dina projekt istället för att välja ORM.

GORM tillhandahåller också en SQL-byggare för att bygga rå SQL, vilket är användbart för operationer som inte stöds.