Spanner-Datenbank-/SQL-Treiber verwenden

„database/sql“ ist eine generische Schnittstelle für SQL- (oder SQL-ähnliche) Datenbanken für die Programmiersprache Go. Wenn Sie „database/sql“ mit Ihrer Anwendung verwenden möchten, nutzen Sie den Spanner -Treiber „database/sql“.

Der Spanner-Treiber „database/sql“ unterstützt sowohl Datenbanken im GoogleSQL-Dialekt als auch Datenbanken im PostgreSQL-Dialekt.

Spanner-Treiber „database/sql“ installieren

Wenn Sie den Spanner-Treiber „database/sql“ in Ihrer Anwendung verwenden möchten, fügen Sie Ihrer Datei go.mod das folgende Modul hinzu:

  github.com/googleapis/go-sql-spanner

Spanner-Treiber „database/sql“ verwenden

Verwenden Sie spanner als Treibernamen und einen voll qualifizierten Datenbanknamen als Verbindungsstring, um eine „database/sql“-Verbindung zu einer Spanner-Datenbank herzustellen:

GoogleSQL

import (
	"context"
	"database/sql"
	"fmt"

	_ "github.com/googleapis/go-sql-spanner"
)

func connect(projectId, instanceId, databaseId string) error {
	ctx := context.Background()
	dsn := fmt.Sprintf("projects/%s/instances/%s/databases/%s",
		projectId, instanceId, databaseId)
	db, err := sql.Open("spanner", dsn)
	if err != nil {
		return fmt.Errorf("failed to open database connection: %v", err)
	}
	defer func() { _ = db.Close() }()

	fmt.Printf("Connected to %s\n", dsn)
	row := db.QueryRowContext(ctx, "select cast(@greeting as string)", "Hello from Spanner")
	var greeting string
	if err := row.Scan(&greeting); err != nil {
		return fmt.Errorf("failed to get greeting: %v", err)
	}
	fmt.Printf("Greeting: %s\n", greeting)

	return nil
}

PostgreSQL

import (
	"context"
	"database/sql"
	"fmt"

	_ "github.com/googleapis/go-sql-spanner"
)

func connect(projectId, instanceId, databaseId string) error {
	ctx := context.Background()
	dsn := fmt.Sprintf("projects/%s/instances/%s/databases/%s",
		projectId, instanceId, databaseId)
	db, err := sql.Open("spanner", dsn)
	if err != nil {
		return fmt.Errorf("failed to open database connection: %v", err)
	}
	defer func() { _ = db.Close() }()

	fmt.Printf("Connected to %s\n", dsn)
	// The Spanner database/sql driver supports both PostgreSQL-style query
	// parameters ($1, $2, ...) and positional query parameters (?, ?, ...).
	// This example uses PostgreSQL-style parameters.
	row := db.QueryRowContext(ctx, "select $1", "Hello from Spanner PostgreSQL")
	var greeting string
	if err := row.Scan(&greeting); err != nil {
		return fmt.Errorf("failed to get greeting: %v", err)
	}
	fmt.Printf("Greeting: %s\n", greeting)

	return nil
}

Weitere Informationen finden Sie im GitHub-Repository für den Spanner-Treiber „database/sql “.

Unterstützte Features

Das Codeverzeichnis für die Spanner-Datenbank „database/sql“ enthält sofort ausführbare Beispiele für häufig verwendete Spanner-Features.

Tipps für bessere Leistung

Beachten Sie die folgenden Best Practices, um die bestmögliche Leistung bei der Verwendung des Spanner-Treibers „database/sql“ zu erzielen:

Nächste Schritte

  • Weitere Informationen zur Verwendung von Spanner mit den Codebeispielen für den Treiber „database/sql“ .
  • Weitere Informationen zu „database/sql“.
  • GORM mit Spanner verwenden.
  • Ein GitHub-Problem senden um eine Feature Request oder einen Fehler zu melden oder eine Frage zum Spanner-Treiber „database/sql“ zu stellen.