Golang SDK for Spice.ai
See Go Docs at pkg.go.dev/github.com/spiceai/gospice/v7.
For full documentation visit docs.spice.ai.
- Get the gospice package.
go get github.com/spiceai/gospice/v7
- Import the package.
import "github.com/spiceai/gospice/v7"
- Create a SpiceClient passing in your API key. Get your free API key at spice.ai.
spice := NewSpiceClient()
defer spice.Close()
- Initialize the SpiceClient with spice.ai cloud.
if err := spice.Init(
spice.WithApiKey(ApiKey),
spice.WithSpiceCloudAddress()
); err != nil {
panic(fmt.Errorf("error initializing SpiceClient: %w", err))
}
- Execute a query and get back an Apache Arrow Reader.
reader, err := spice.Query(context.Background(), "SELECT 1")
if err != nil {
panic(fmt.Errorf("error querying: %w", err))
}
defer reader.Release()
- Iterate through the reader to access the records.
for reader.Next() {
record := reader.Record()
defer record.Release()
fmt.Println(record)
}
Follow the quickstart guide to install and run spice locally
Initialize the SpiceClient to use local runtime connection:
if err := spice.Init(); err != nil {
panic(fmt.Errorf("error initializing SpiceClient: %w", err))
}
Configure with a custom flight address:
if err := spice.Init(
spice.WithFlightAddress("grpc://localhost:50052")
); err != nil {
panic(fmt.Errorf("error initializing SpiceClient: %w", err))
}
Run go run .
to execute a sample query and print the results to the console.
See client_test.go for examples on querying Ethereum and Polygon blocks.
The SpiceClient
implements connection retry mechanism (3 attempts by default).
The number of attempts can be configured via SetMaxRetries
:
spice := NewSpiceClient()
spice.SetMaxRetries(5) // Setting to 0 will disable retries
Retries are performed for connection and system internal errors. It is the SDK user's responsibility to properly handle other errors, for example RESOURCE_EXHAUSTED (HTTP 429).