Postgres Golang

Postgres Golang



Go wird oft als Golang bezeichnet und ist eine Open-Source-, kompilierte und statisch typisierte Programmiersprache, die von Google erstellt wurde. Es ist leicht verständlich, schnell, klar und leistungsstark aufgebaut.

PostgreSQL, oft einfach als Postgres bezeichnet, ist ein leistungsstarkes, objektrelationales Open-Source-Datenbanksystem. Mit mehr als 30 Jahren aktiver Entwicklung hat es sich einen guten Ruf für seine Robustheit, seine erweiterten Funktionen und seine weitgehende Einhaltung von Standards erworben.

Es ist für die Bewältigung umfangreicher Arbeitslasten konzipiert, von einzelnen Computern bis hin zu Data Warehouses oder Webdiensten mit vielen gleichzeitigen Benutzern. Es bietet Transaktionsintegrität und -beständigkeit und unterstützt verschiedene erweiterte Datentypen und eine leistungsstarke, flexible Datenbearbeitungssprache.







In diesem Tutorial lernen wir, wie man einen PostgreSQL-Server konfiguriert und mit einer Go-Anwendung verbindet.



Anforderungen:

Gehen Sie zur Programmiersprache – Es stellt sicher, dass der Go-Compiler auf Ihrem Computer installiert ist.



PostgreSQL-Datenbank – Sie müssen auch PostgreSQL installiert haben. Sie können es direkt auf Ihrem Computer installieren oder für eine einfachere Einrichtung einen Docker-Container verwenden.





Entwicklungswerkzeuge – Eine integrierte Entwicklungsumgebung (IDE), die Go wie Visual Studio Code, GoLand usw. unterstützt.

Grundkenntnisse in SQL und Go – Um mit der PostgreSQL-Datenbank interagieren zu können, müssen Sie SQL und die verschiedenen Abfragen verstehen, die Sie ausführen müssen. Sie benötigen außerdem grundlegende Kenntnisse der Go-Sprache.



Wenn die gegebenen Anforderungen erfüllt sind, können wir mit den folgenden Schritten fortfahren.

Projektaufbau

Beginnen wir mit der Einrichtung unserer Projektverzeichnisstruktur. Erstellen Sie das Hauptverzeichnis, in dem Sie den Quellcode des Projekts speichern müssen.

$ mkdir golang_postgres

Navigieren Sie in das Verzeichnis und initialisieren Sie ein neues Go-Modul.

$ CD golang_postgres && Gehen Sie zu Mod Init Main

Installieren Sie die erforderlichen Treiber

Um mit der PostgreSQL-Datenbank interagieren zu können, benötigen wir einen PostgreSQL-Treiber für die Programmiersprache Go.

Für dieses Tutorial verwenden wir den pq-Treiber, der eine Vielzahl von Funktionen für die Arbeit mit der PostgreSQL-Datenbank bietet.

Sie können es installieren, indem Sie den folgenden Befehl ausführen:

Holen Sie sich github.com / lib / pq

Erstellen Sie eine Datenbank

Der nächste Schritt besteht darin, eine neue PostgreSQL-Datenbank zu erstellen. Auch dies können wir in der PostgreSQL-Shell tun.

$ psql -IN postgres

Dieser Befehl fordert Sie zur Eingabe des Passworts des Postgres auf. Führen Sie nach der Protokollierung den Befehl „Datenbank erstellen“ aus, um eine neue Datenbank zu initialisieren:

postgres=# Datenbank erstellen golang;
DATENBANK ERSTELLEN

Der angegebene Befehl erstellt eine neue Datenbank namens „golang“. Ersetzen Sie den Datenbanknamen gerne durch Ihren Wunschnamen.

Anschließend können Sie überprüfen, ob die Datenbank erfolgreich erstellt wurde, indem Sie eine Verbindung herstellen.

postgres=# \c golang;
Sie sind nun als Benutzer „postgres“ mit der Datenbank „golang“ verbunden.

Als nächstes richten Sie die Tabelle ein, in der Sie die Daten speichern möchten. Für dieses Tutorial erstellen wir eine einfache Tabelle, in der die Sitzungsinformationen gespeichert werden.

TABELLE ERSTELLEN db_clients (
id SERIELLER PRIMÄRSCHLÜSSEL,
Name VARCHAR(100) NICHT NULL,
session_time TIMESTAMP NICHT NULL,
number_of_queries INT DEFAULT 0,
active_state BOOLEAN STANDARD FALSE
);

Die angegebene Abfrage sollte eine neue Tabelle mit dem Namen „db_clients“ erstellen, die Informationen über die Clients speichert, die bei einem bestimmten Datenbankserver angemeldet sind.

Verbinden Sie die Go-App mit PostgreSQL

Sobald wir die Datenbank und die Datenbanktabelle eingerichtet haben, können wir fortfahren und lernen, wie wir unsere Go-Anwendung mit dem PostgreSQL-Server verbinden.

Erstellen Sie zunächst eine „main.go“-Datei im Stammverzeichnis Ihres Projekts:

$ berühren main.go

Bearbeiten Sie als Nächstes die Datei mit dem Texteditor Ihrer Wahl:

$ Weil main.go

Fügen Sie in der Datei „main.go“ den Quellcode wie im Folgenden gezeigt hinzu:

Paket main

importieren (
„Datenbank/SQL“
„fmt“
'Protokoll'

_ 'github.com/lib/pq'
)

Funktion main ( ) {
connStr := „postgres://postgres:password@localhost/golang?sslmode=disable“
db, err := sql.Open ( „postgres“ , connStr )
Wenn irren ! = Null {
log.Fatal ( irren )
}

Wenn err = db.Ping ( ) ; irren ! = Null {
log.Fatal ( irren )
}

fmt.Println ( „Mit Datenbank verbunden“ )
}

Im vorherigen Code beginnen wir mit dem Import der erforderlichen Module. Anschließend definieren wir die Hauptfunktion. Schließlich definieren wir in der Hauptfunktion die Verbindungszeichenfolge, die es uns ermöglicht, den Zielhost, den Datenbankbenutzer, das Datenbankkennwort und die eigentliche Zieldatenbank anzugeben.

Das Modul unterstützt die folgenden Parameter in der Verbindungszeichenfolge:

  • Datenbankname – Der Name der Datenbank, zu der eine Verbindung hergestellt werden soll.
  • Benutzer – Der Benutzer, als der Sie sich anmelden möchten.
  • Passwort – Das Passwort des Benutzers.
  • host – Der Host, zu dem eine Verbindung hergestellt werden soll. Die Werte, die mit „/“ beginnen, gelten für Unix-Domänen-Sockets (der Standardwert ist localhost).
  • port – Der Port, an den gebunden werden soll (der Standardwert ist 5432).
  • sslmode – Ob SSL verwendet werden soll oder nicht (der Standardwert ist „require“; dies ist nicht der Standardwert für libpq).
  • fallback_application_name – Ein Anwendungsname, auf den zurückgegriffen werden soll, wenn keiner angegeben wird.
  • connect_timeout – Die maximale Wartezeit auf die Verbindung in Sekunden. Null oder nicht angegeben bedeutet, auf unbestimmte Zeit zu warten.
  • sslcert – Der Speicherort der Zertifikatsdatei. Die Datei muss die PEM-kodierten Daten enthalten.
  • sslkey – Der Speicherort der Schlüsseldatei. Die Datei muss die PEM-kodierten Daten enthalten.
  • sslrootcert – Der Speicherort der Stammzertifikatdatei. Die Datei muss die PEM-kodierten Daten enthalten.

Sie können Ihre Zielverbindungseigenschaften nach Bedarf konfigurieren. Informationen zum Konfigurieren von SSL und den akzeptierten SSLMode-Parametern finden Sie in unserem Tutorial https://linuxhint.com/postgres-sslmode .

Sobald Sie mit den Verbindungseigenschaften zufrieden sind, können Sie den vorherigen Code ausführen, um zu testen, ob die Verbindung hergestellt wurde.

go run .\main.go

Nach der Verbindung sollten Sie die folgende Ausgabe erhalten:

Verbunden mit der Datenbank

PostgreSQL fügt Daten in die Tabelle ein

Der nächste Schritt besteht darin, die Beispieldaten in die zuvor erstellte Tabelle einzufügen. Wir können dies tun, indem wir die Einfügeabfragen als Zeichenfolgenliteral definieren und dann die Funktion db.Exec() verwenden, um die Zielabfrage auszuführen.

Der Code lautet wie folgt:

---
insertStatement := `INSERT INTO db_clients (name, session_time, number_of_queries, active_state)
WERTE
('psql', '2023-05-26 10:15:00', 10, true),
('datagrip', '2023-05-26 09:30:00', 5, true),
('dbeaver', '2023-05-26 11:00:00', 20, true),
('workbench', '2023-05-26 14:45:00', 15, false),
('remote', '2023-05-26 13:20:00', 8, true);`

_, err = db.Exec(insertStatement)
if err != nil {
log.Fatal(err)
}

Wenn Sie den vorherigen Code ausführen, sollten die angegebenen Datensätze in die Zieltabelle eingefügt werden.

PostgreSQL-Abfragedaten

Um die Zeilen aus der Tabelle abzufragen, können wir die SELECT-Anweisung als String definieren und sie mit db.Query() ausführen. Wir können mit der Funktion Next() über die Tabellenzeilen iterieren und sie wie im Folgenden gezeigt ausdrucken:

Zeilen, err := db.Query ( „SELECT * FROM db_clients“ )
Wenn irren ! = Null {
log.Fatal ( irren )
}
Zeilen aufschieben.Schließen ( )

für rows.Next ( ) {
War Ausweis int
Var-Namenszeichenfolge
var sessionTime time.Time
var numberOfQueries int
var activeState bool

err := rows.Scan ( & Ausweis , & Name, & Sitzungszeit, & numberOfQueries, & aktiver Zustand )
Wenn irren ! = Null {
log.Fatal ( irren )
}

fmt.Printf ( „ID: %d, Name: %s, Sitzungszeit: %s, Anzahl der Abfragen: %d, Aktiver Status: %t \N ' , Ausweis , Name, SessionTime, NumberOfQueries, ActiveState )
}

Wenn err = rows.Err ( ) ; irren ! = Null {
log.Fatal ( irren )
}

Sobald wir den vorherigen Code ausführen, sollte er alle Zeilen aus der Tabelle „db_clients“ drucken, wie in der folgenden Beispielausgabe gezeigt:

Hier hast du es!

Abschluss

Wir haben untersucht, wie wir das pq-Paket verwenden können, um mit Golang eine Verbindung zur PostgreSQL-Datenbank herzustellen und diese abzufragen.