Stellen Sie mit GORM eine Verbindung zu einer Postgres-Datenbank in Ihrer Go-Anwendung her

Stellen Sie mit GORM eine Verbindung zu einer Postgres-Datenbank in Ihrer Go-Anwendung her
Leser wie Sie helfen, MUO zu unterstützen. Wenn Sie über Links auf unserer Website einen Kauf tätigen, erhalten wir möglicherweise eine Affiliate-Provision. Weiterlesen.

Postgres ist aufgrund seiner vielen Funktionen und Benutzerfreundlichkeit eine der beliebtesten SQL-Datenbanken. Postgres ist ACID-konform mit Funktionen wie Multi-Version Concurrency Control, asynchroner Replikation, verschachtelten Transaktionen und Write-Ahead-Protokollierung. Zusammen mit vielen anderen machen diese Funktionen Postgres zum idealen SQL-Datenbankverwaltungssystem.





Das Go-Ökosystem beherbergt viele Pakete für die Interaktion mit verschiedenen DBMS, einschließlich Postgres. Go bietet das integrierte Datenbank/sql Paket für die Arbeit mit SQL-Datenbanken unter Verwendung von Datenbanktreibern. Mithilfe von Go-Datenstrukturen können Sie beliebte ORMs von Drittanbietern wie GORM für eine einfache Interaktion mit Ihrer Datenbank integrieren.





Erste Schritte mit GORM und Postgres

  die GORM-Homepage

Das GORM-Paket ist eines der beliebtesten ORMs im Go-Ökosystem, weil es entwicklerfreundlich und funktionsreich ist und darauf aufbaut Die Datenbank/sql Paket .





Warum verliert mein Computer ständig die Internetverbindung?

GORM bietet Funktionen für automatische Migrationen, Protokollierung, vorbereitete Anweisungen, Transaktionen und Sharding. Das Paket verfolgt den Code-First-Ansatz mit Strukturen und anderen integrierten Datentypen.

Führen Sie diesen Terminalbefehl in Ihrem Arbeitsverzeichnis aus, um das GORM-Paket zu den Abhängigkeiten Ihres Projekts hinzuzufügen:



 go get gorm.io/gorm\n

Sie benötigen einen Datenbanktreiber, um mit dem GORM-Paket zu arbeiten. GORM bietet Datenbanktreiber für gängige DBMS. Führen Sie diesen Befehl in Ihrem Arbeitsverzeichnis aus, um GORM zu installieren Postgres Treiber:

 go get gorm.io/driver/postgres\n

Verbinden von Postgres mit Go mit GORM

Importieren Sie diese Pakete in Ihre Go-Datei, um mit dem ORM- und Datenbanktreiber zu arbeiten. Sie verwenden die Protokoll Paket zum Protokollieren von Fehlern in Ihrer Konsole und dem fmt Paket, um die Ausgabe zu drucken.





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

Sie benötigen eine Verbindungszeichenfolge, um eine Verbindung zu Ihrem herzustellen Postgres-Datenbank in der Laufumgebung. Sie können eine Struktur als Modell für die Felder verwenden, aus denen die Verbindungszeichenfolge besteht. Die Verwendung einer Struktur erleichtert das Ändern und Testen verschiedener Werte, insbesondere in Fällen von Abhängigkeitsinjektion.

Hier ist ein Beispiel für ein Strukturmodell für die Felder, aus denen die Verbindungszeichenfolge besteht:





Windows 10 Touchscreen einschalten
 type Config struct {\n Host string\n Port string\n Password string\n User string\n DBName string\n SSLMode string\n}\n

Nachfolgend finden Sie eine typische Funktion für Ihre Datenbankverbindung. Es gibt die Verbindungsinstanz und je nach Verbindungsstatus einen Fehler zurück.

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

Sie können das Verbindungsstrukturmodell instanziieren und die Felder mit den Werten in Ihrer Postgres-Datenbank füllen.

     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

Das dsn Variable verwendet die Sprintf Formatierungsmethode u Gehen Sie zu String-Formatierungsverben um die Felder der zu verketten Konfig struct und richten Sie die Postgres-Verbindungszeichenfolge ein.

Sie können eine Datenbankverbindung mit GORM über die öffnen Offen Methode. Das Offen -Methode übernimmt eine offene Verbindung von einem Datenbanktreiber und eine Liste optionaler Konfigurationen aus der Konfig Typ des GORM-Pakets. Es gibt eine Verbindungsinstanz und einen optionalen Fehler zurück.

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

Pingen der Datenbank, um den Verbindungsstatus zu überprüfen

Sie können Ihre Datenbank anpingen, um den Integritäts-/Onlinestatus mit einer Funktion zu überprüfen, die ein boolesches Ergebnis oder einen Fehler zurückgibt, wenn die Datenbankverbindung ungültig ist.

So schließen Sie einen Nintendo Switch an einen Fernseher an
 func PingDb() (bool, error) {\n \n return true, nil\n}\n

Sie müssen eine neue Verbindungsinstanz erstellen, um die Datenbank zu pingen. Hier ist ein Beispiel mit der Neue Verbindung Funktion zum Erstellen einer Verbindungsinstanz:

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

Sobald Sie eine Verbindungsinstanz erhalten haben, erstellen Sie eine Datenbankinstanz mit der DB Methode der Verbindung.

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

Sie können die Datenbank mit pingen Klingeln Methode der Datenbankinstanz. Das Klingeln Methode gibt alle Fehler zurück oder Null ob die Verbindung erfolgreich war.

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

Eine erfolgreiche Ausführung sollte zu einer Ausgabe ähnlich der folgenden führen:

  erfolgreicher Verbindungsausgang

Sie können das database/sql-Paket verwenden, um mit der SQL-Datenbank in Go zu arbeiten

Das Datenbank/sql Das Paket ist erweiterbar, und da die meisten Go-Datenbankpakete und -Treiber das Paket erweitern, können Sie das Paket in Ihren Projekten verwenden, anstatt sich für ORMs zu entscheiden.

GORM bietet auch einen SQL-Builder zum Erstellen von Roh-SQL, was für nicht unterstützte Operationen hilfreich ist.