Important
The SingleStore 9.1 release candidate (RC) gives you the opportunity to preview, evaluate, and provide feedback on new and upcoming features prior to their general availability. In the interim, SingleStore 9.0 is recommended for production workloads, which can later be upgraded to SingleStore 9.1.
Connect with Go
On this page
Use the Go SingleStore driver (go-singlestore-driver), a Go driver for the database/sql driver package, to connect Go applications to SingleStore databases.
Refer to the Go-SingleStore-Driver GitHub repository for more information on supported features and enhancements.
Prerequisites
Install the Go SingleStore Driver
Install the go-singlestore-driver package using the Go CLI utility:
go get -u github.com/singlestore-labs/go-singlestore-driver/v2
Configure the Connection to SingleStore
Use the following connection configuration parameters in the standard MySQL DSN (Data Source Name) or other applicable methods:
-
protocol: Network transport type used to establish the database connection, which determines how the accompanying address is interpreted.For example, unixortcp. -
hostname: IP address or hostname of the SingleStore cluster.Specified when the protocol is tcp. -
port: Port of the SingleStore cluster.The default is 3306.Specified when the protocol is tcp. -
unix_: Unix domain socket for local inter-process communication between the client and SingleStore.socket Specify the filesystem path to the socket file, including the filename and extension. Specified when the protocol is unix. -
username: Username of the SingleStore database user. -
password: Password for the SingleStore database user. -
database: Name of the SingleStore database to connect with. -
param=value: (Optional) Additional connection parameters.
The driver supports the following DSN format:
<username>:<password>@<protocol>(<hostname:port_or_socket>)/<dbname>[?param=value]
For more information on the DSN and supported parameters, refer to DSN (Data Source Name).
Example
The following example connects to a SingleStore database and performs basic CRUD operations.
-
Create a project folder and initialize the Go module.
mkdir ssGocd ssGogo mod init ssGo -
Install the
go-singlestore-driverpackage.go get -u github.com/singlestore-labs/go-singlestore-driver/v2 -
Create a main.
go file and add the following code to this file. Update the connection configuration of your SingleStore database in the code. package mainimport ("database/sql""fmt""log"_ "github.com/singlestore-labs/go-singlestore-driver/v2")func main() {// Connection settingshost := "svc-xxxx"port := "3306"user := "s2user"password := "p455w1kd"database := "demo"// SingleStore DSNdsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?parseTime=true",user,password,host,port,database,)// Open connection using the SingleStore driverdb, err := sql.Open("singlestore", dsn)if err != nil {log.Fatal(err)}defer db.Close()// Verify connectionif err := db.Ping(); err != nil {log.Fatal(err)}fmt.Println("Connected to SingleStore")// Create tablecreateTableSQL := `CREATE TABLE IF NOT EXISTS users (id BIGINT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),email VARCHAR(255))`_, err = db.Exec(createTableSQL)if err != nil {log.Fatal(err)}fmt.Println("Table created")// Insert rowsinsertSQL := `INSERT INTO users (name, email)VALUES (?, ?)`_, err = db.Exec(insertSQL, "Alice", "alice@example.com")if err != nil {log.Fatal(err)}_, err = db.Exec(insertSQL, "Bob", "bob@example.com")if err != nil {log.Fatal(err)}fmt.Println("Rows inserted")// Update a rowupdateSQL := `UPDATE usersSET email = ?WHERE name = ?`result, err := db.Exec(updateSQL, "alice@newdomain.com", "Alice")if err != nil {log.Fatal(err)}rowsUpdated, _ := result.RowsAffected()fmt.Printf("Rows updated: %d\n", rowsUpdated)// Delete a rowdeleteSQL := `DELETE FROM usersWHERE name = ?`result, err = db.Exec(deleteSQL, "Bob")if err != nil {log.Fatal(err)}rowsDeleted, _ := result.RowsAffected()fmt.Printf("Rows deleted: %d\n", rowsDeleted)// Query remaining rowsrows, err := db.Query(`SELECT id, name, emailFROM users`)if err != nil {log.Fatal(err)}defer rows.Close()fmt.Println("\nRemaining users:")for rows.Next() {var id intvar name stringvar email stringif err := rows.Scan(&id, &name, &email); err != nil {log.Fatal(err)}fmt.Printf("ID=%d Name=%s Email=%s\n", id, name, email)}if err := rows.Err(); err != nil {log.Fatal(err)}} -
Run the application.
go run main.goConnected to SingleStore Table created Rows inserted Rows updated: 1 Rows deleted: 1 Remaining users: ID=1 Name=Alice Email=alice@newdomain.com
References
-
Go-SingleStore-Driver GitHub repository
-
Additional examples:
Last modified: