Postgres is een van de populaire SQL-databases vanwege de vele functies en het gebruiksgemak. Postgres is ACID-compatibel met functies zoals Multi-Version Concurrency Control, asynchrone replicatie, geneste transacties en vooruitschrijvende logboekregistratie. Samen met vele andere maken deze functies Postgres tot het favoriete SQL-databasebeheersysteem.
Het Go-ecosysteem bevat veel pakketten voor interactie met verschillende DBMS, waaronder Postgres. Go biedt de ingebouwde database/sql pakket voor het werken met SQL-databases met behulp van databasestuurprogramma's. Met behulp van Go-datastructuren kunt u populaire ORM's van derden, zoals GORM, integreren voor eenvoudige interactie met uw database.
Aan de slag met GORM en Postgres
Het GORM-pakket is een van de meest populaire ORM's in het Go-ecosysteem omdat het ontwikkelaarsvriendelijk en rijk aan functies is en voortbouwt op de database/sql pakket.
GORM biedt functionaliteit voor automatische migraties, logboekregistratie, voorbereide overzichten, transacties en sharding. Het pakket volgt de code-eerst-benadering met behulp van structs en andere ingebouwde gegevenstypen.
Voer deze terminalopdracht uit in uw werkmap om het GORM-pakket toe te voegen aan de afhankelijkheden van uw project:
gaan download gorm.io/gorm\n
U hebt een databasestuurprogramma nodig om met het GORM-pakket te werken. GORM biedt databasestuurprogramma's voor populaire DBMS. Voer deze opdracht uit in uw werkmap om de GORM te installeren Postgres bestuurder:
gaan download gorm.io/driver/postgres\n
Postgres verbinden met Go met behulp van GORM
Importeer deze pakketten in uw Go-bestand om te werken met het ORM- en databasestuurprogramma. Je gebruikt de loggen pakket om fouten op uw console en het fmt pakket om uitvoer af te drukken.
importeren (\N "fmt"\N "gorm.io/driver/postgres"\N "gorm.io/gorm"\N "logboek"\n)\n
U hebt een verbindingsreeks nodig om verbinding te maken met uw Postgres-database in de hardloopomgeving. U kunt een struct als model gebruiken voor de velden waaruit de verbindingsreeks bestaat. Het gebruik van een struct maakt het gemakkelijker om verschillende waarden te wijzigen en te testen, vooral in het geval van afhankelijkheidsinjectie.
Hier is een voorbeeld van een struct-model voor de velden waaruit de verbindingsreeks bestaat:
type configuratie structuur {\n Gastheer snaar\n Poort snaar\nWachtwoord snaar\n Gebruiker snaar\n DBNaam snaar\nSSLModus snaar\n}\n
Hieronder vindt u een typische functie voor uw databaseverbinding. Het retourneert de verbindingsinstantie en een fout, afhankelijk van de verbindingsstatus.
funcNieuweVerbinding()(*gorm. database, fout) {\N opbrengst DB, nihil\n}\n
U kunt het verbindingsstructuurmodel instantiëren en de velden vullen met de waarden in uw Postgres-database.
configuraties := Config{\n Host: "database_Host",\n Poort: "database_Poort",\n Wachtwoord: "database_wachtwoord",\n Gebruiker: "database_gebruiker",\n DBNaam: "database naam",\n SSL-modus: "vals",\n }\n dsn := fmt. Sprintf("host=%s poort=%s gebruiker=%s wachtwoord=%s dbname=%s sslmode=%s", configuraties. Gastheer, configuraties. Poort, configuraties. Gebruiker, configuraties. Wachtwoord, configuraties. DBName, configuraties. SSL-modus)\n
De dsn variabele gebruikt de Sprintf opmaakmethode en Ga werkwoorden in tekenreeksopmaak om de velden van de configuratie struct en stel de Postgres-verbindingsreeks in.
U kunt een databaseverbinding met GORM openen met behulp van de Open methode. De Open methode neemt een open verbinding van een databasestuurprogramma en een lijst met optionele configuraties van het configuratie type van het GORM-pakket. Het retourneert een verbindingsinstantie en een optionele fout.
db, fout := gorm. Open (postgres. Open (dsn), &gorm. Configuratie{})\n als fout!= nihil {\N opbrengst db, err\n }\n
De database pingen om de verbindingsstatus te controleren
U kunt uw database pingen om de gezondheid/online status te verifiëren met een functie die een booleaans resultaat retourneert of een fout als de databaseverbinding ongeldig is.
funcPingDb()(boel, fout) {\n\n opbrengstWAAR, nihil\n}\n
U moet een nieuwe verbindingsinstantie maken om de database te pingen. Hier is een voorbeeld met behulp van de NieuweVerbinding functie om een verbindingsinstantie te maken:
connectionInstance, err := NewConnection()\n als fout!= nihil {\n logboek. fataal("De databaseverbinding is mislukt %v", fout. Fout())\n }\n
Zodra u een verbindingsinstantie hebt verkregen, maakt u een database-instantie met de DB methode van de verbinding.
dbConnection, err := verbindingsinstantie. DB()\n als fout!= nihil {\N opbrengstvals, err\n } \n
U kunt de database pingen met de Ping methode van de database-instantie. De Ping methode retourneert eventuele fouten of nihil als de verbinding gelukt is.
\n fout = dbVerbinding. Pingen()\n als fout!= nihil {\N opbrengstvals, err\n } anders {\n \n fmt. Println("De verbinding is gelukt")\n }\n
Een succesvolle run zou moeten resulteren in uitvoer die vergelijkbaar is met deze:
U kunt het database/sql-pakket gebruiken om met SQL Database in Go te werken
De database/sql pakket is uitbreidbaar en aangezien de meeste Go-databasepakketten en stuurprogramma's het pakket uitbreiden, kunt u het pakket in uw projecten gebruiken in plaats van te kiezen voor ORM's.
GORM biedt ook een SQL-builder voor het bouwen van onbewerkte SQL, wat handig is voor niet-ondersteunde bewerkingen.