pgx für Go: Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in pgx: Der leistungsstarke PostgreSQL-Treiber für Go

Die Bibliothek pgx (PostgreSQL eXtended) ist ein moderner, hochperformanter Treiber und Werkzeugsatz für die Arbeit mit PostgreSQL in der Programmiersprache Go. Im Gegensatz zum Standardpaket database/sql bietet pgx direkten Zugriff auf das PostgreSQL-Protokoll, was zu einer deutlichen Leistungssteigerung führt und Zugriff auf einzigartige Datenbankfunktionen wie LISTEN/NOTIFY, COPY-Protokoll, Arbeit mit Arrays und zusammengesetzten Typen und vieles mehr ermöglicht.

Warum pgx anstelle des Standardpakets database/sql verwenden? Erstens ist pgx durch den Wegfall überflüssiger Abstraktionen 30-50% schneller. Zweitens unterstützt es alle modernen Funktionen von PostgreSQL 12+ (und neueren Versionen). Drittens bietet pgx eine umfangreiche API für die Arbeit mit Verbindungen, Verbindungspools, vorbereiteten Abfragen und Transaktionen. Schließlich ist pgx über einen speziellen Adapter vollständig kompatibel mit database/sql, sodass Sie es auch in Projekten einsetzen können, die bereits die Standardschnittstelle verwenden.

Installation von pgx

Die Installation von pgx in ein Go-Projekt erfolgt mit dem Standardbefehl go get. Für die Arbeit mit PostgreSQL müssen Sie das Hauptpaket pgx und optional zusätzliche Module installieren:

# Installation des Hauptpakets pgx v5 (empfohlene Version)
go get github.com/jackc/pgx/v5

# Installation des Pakets für den Verbindungspool
go get github.com/jackc/pgx/v5/pgxpool

# Installation des Adapters für die Kompatibilität mit database/sql
go get github.com/jackc/pgx/v5/stdlib

Nach der Ausführung dieser Befehle können Sie pgx in Ihre Go-Dateien importieren. Stellen Sie sicher, dass Go Version 1.18 oder höher installiert ist, da pgx v5 Generics verwendet.

Schnellstart: Erste Verbindung zu PostgreSQL

Schreiben wir ein einfaches Programm, das eine Verbindung zu einer PostgreSQL-Datenbank herstellt und eine Abfrage ausführt. Angenommen, PostgreSQL läuft auf localhost:5432, die Datenbank heißt testdb, der Benutzer testuser mit dem Passwort testpass.

package main

import (
    "context"
    "fmt"
    "log"
    "os"

    "github.com/jackc/pgx/v5"
)

func main() {
    // Verbindungszeichenfolge
    connStr := "postgres://testuser:testpass@localhost:5432/testdb"

    // Verbindung herstellen
    conn, err := pgx.Connect(context.Background(), connStr)
    if err != nil {
        log.Fatalf("Verbindung zur Datenbank fehlgeschlagen: %v", err)
    }
    defer conn.Close(context.Background())

    // Einfache Abfrage ausführen
    var greeting string
    err = conn.QueryRow(context.Background(), "SELECT 'Hallo, PostgreSQL!'").Scan(&greeting)
    if err != nil {
        log.Fatalf("Abfragefehler: %v", err)
    }

    fmt.Println(greeting)
}

Dieser Code stellt eine Verbindung her, führt eine Abfrage aus und gibt das Ergebnis aus. Beachten Sie die Verwendung von context.Background() – dies ist die Standardmethode zur Übergabe eines Kontexts in Go, mit der Sie Timeouts und den Abbruch von Operationen steuern können.

Wichtige Methoden und Funktionen von pgx

Betrachten wir die wichtigsten Methoden und Funktionen der pgx-Bibliothek. Für jede Methode gibt es eine Beschreibung, Parameter und ein funktionierendes Codebeispiel.

1. pgx.Connect – Verbindung herstellen

Funktion: Erstellt eine neue Verbindung zu PostgreSQL. Dies ist die grundlegende Methode, um mit der Datenbank zu arbeiten.

Parameter:

  • ctx context.Context – Kontext zur Steuerung der Verbindungslebensdauer
  • connString string – Verbindungszeichenfolge im URI- oder DSN-Format

Rückgabewert: (*pgx.Conn, error)

Beispiel:

conn, err := pgx.Connect(context.Background(), "postgres://user:pass@localhost:5432/mydb")
if err != nil {
    log.Fatal(err)
}
defer conn.Close(context.Background())

2. c

Empfehlungen