Skip to content

Go SDK guide

This guide introduces how to set up the Go SDK to connect to NebulaGraph and perform simple queries.

Prerequisites

Connection information is obtained from NebulaGraph Cloud. For more information, see Connect to your database.

Steps

  1. Download the source code of the Go SDK, for example, nebula-golang-5.0.0.tar.gz.

  2. Modify the Go module dependencies to use the local version of the Go SDK. Example:

    workspace=/app/myapp
    tar zxvf nebula-golang-5.0.0.tar.gz -o /tmp/golang
    # In your project, run go mod edit
    cd ${workspace}
    go mod edit -replace github.com/vesoft-inc/nebula-ng-tools/golang=/tmp/golang
    

    For more information, see go.mod file reference.

  3. Use the SDK to connect to NebulaGraph and perform queries as follows:

    package main
    
    import (
     "fmt"
    
     nebula "github.com/vesoft-inc/nebula-ng-tools/golang"
    )
    
    const (
     address  = "<host>:<port>"
     username = "<username>"
     password = "<password>"
    )
    
    // Initialize logger
    var log = nebula.DefaultLogger
    
    func basicClient() {
     client, err := nebula.NewNebulaClient(address, username, password)
     if err != nil {
      log.Error(err.Error())
      return
    }
    resp, err := client.Execute("return 1 as a")
    if err != nil {
     log.Error(err.Error())
     return
    }
    log.Info(fmt.Sprintf("columns: %v", resp.Columns()))
    for resp.HasNext() {
     row, err := resp.Next()
     if err != nil {
      log.Error(err.Error())
      return
     }
     v1, err := row.GetValueByIndex(0)
     if err != nil {
      log.Error(err.Error())
      return
     }
     log.Info(v1.String())
     v2, err := row.GetValueByName("a")
      if err != nil {
       log.Error(err.Error())
       return
      }
      log.Info(v2.String())
     }
    }
    
    func basicPool() {
     pool, err := nebula.NewNebulaPool(address, username, password)
     if err != nil {
      log.Error(err.Error())
      return
     }
     client, err := pool.GetClient()
     if err != nil {
      log.Error(err.Error())
      return
     }
     resp, err := client.Execute("return 1 as a")
     if err != nil {
      log.Error(err.Error())
      return
     }
     log.Info(fmt.Sprintf("columns: %v", resp.Columns()))
     for resp.HasNext() {
      row, err := resp.Next()
      if err != nil {
       log.Error(err.Error())
       return
      }
      v1, err := row.GetValueByIndex(0)
      if err != nil {
       log.Error(err.Error())
       return
      }
      log.Info(v1.String())
      v2, err := row.GetValueByName("a")
      if err != nil {
       log.Error(err.Error())
       return
      }
      log.Info(v2.String())
     }
    }
    
    func main() {
     basicClient()
     basicPool()
    }
    

    Replace <host>, <port>, <username>, and <password> with the actual connection information obtained from NebulaGraph Cloud.