In a distributed system, Go functions can interact with distributed databases. The specific steps are as follows: Install the necessary dependencies. Use the spanner.NewClient function to connect to the database. Use the Query method to execute the query and get the iterator. Use the Do method to iterate through the query results and process the data. After the query is complete, use the Close method to close the connection.
In distributed systems, it is a common requirement for Go functions to interact with distributed databases. This article guides you through using Go code to connect to and query a distributed database.
The first step is to install the necessary dependencies:
import ( "context" "fmt" "log" "cloud.google.com/go/spanner" )
To connect to the database, use spanner.NewClient
Function:
client, err := spanner.NewClient(context.Background(), "projects/my-project", "instances/my-instance", "databases/my-database") if err != nil { log.Fatal(err) }
To execute a query, use Query
Method:
stmt := spanner.Statement{SQL: `SELECT * FROM Singers`} iter := client.Single().Query(context.Background(), stmt) defer iter.Stop()
iter
is an iterator that will iterate over the query results.
To process the results, please use the Do
method:
for { row, err := iter.Next() if err == iterator.Done { break } if err != nil { log.Fatal(err) } var singerId int64 var firstName string var lastName string if err := row.ColumnByName("SingerId", &singerId); err != nil { log.Fatal(err) } if err := row.ColumnByName("FirstName", &firstName); err != nil { log.Fatal(err) } if err := row.ColumnByName("LastName", &lastName); err != nil { log.Fatal(err) } fmt.Printf("%d %s %s\n", singerId, firstName, lastName) }
After the query is completed, please close Connection to the database:
client.Close()
The following is a complete Go code example showing how to connect to the Cloud Spanner database and execute queries:
package main import ( "context" "fmt" "log" "cloud.google.com/go/spanner" ) func main() { client, err := spanner.NewClient(context.Background(), "projects/my-project", "instances/my-instance", "databases/my-database") if err != nil { log.Fatal(err) } defer client.Close() stmt := spanner.Statement{SQL: `SELECT * FROM Singers`} iter := client.Single().Query(context.Background(), stmt) defer iter.Stop() for { row, err := iter.Next() if err == iterator.Done { break } if err != nil { log.Fatal(err) } var singerId int64 var firstName string var lastName string if err := row.ColumnByName("SingerId", &singerId); err != nil { log.Fatal(err) } if err := row.ColumnByName("FirstName", &firstName); err != nil { log.Fatal(err) } if err := row.ColumnByName("LastName", &lastName); err != nil { log.Fatal(err) } fmt.Printf("%d %s %s\n", singerId, firstName, lastName) } }
The above is the detailed content of Interaction between Golang functions and distributed databases in distributed systems. For more information, please follow other related articles on the PHP Chinese website!