Golang
bit.io works with any golang PostgreSQL library; in this example we use pgx
.
Setup:
go get github.com/jackc/pgx/v4
Build:
go build
Grab your bit.io API key:
- Log into bit.io and select the database you would like to query
- Click the green "Connect" button
- Click on your API key (the "Password" field in the connect menu) to copy it
Run:
BITDOTIO_APIKEY=<your api key> ./bitdotio-golang-example
to save the key to your environment.
To run the program: go run filename.go
package main
import (
"context"
"fmt"
"os"
"github.com/jackc/pgx/v4"
)
func main() {
apiKey, ok := os.LookupEnv("BITDOTIO_APIKEY") // "Password" from connect menu
if !ok {
panic("BITDOTIO_APIKEY not set in environment")
}
userName := "<bit.io username>"
dbName := "dliden/2020_Census_Reapportionment"
connectUrl := fmt.Sprintf("postgres://%s:%[email protected]:5432/%s", userName, apiKey, dbName)
conn, err := pgx.Connect(context.Background(), connectUrl)
if err != nil {
fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err)
os.Exit(1)
}
defer conn.Close(context.Background())
// Let's see how the census population of Nevada has changed
sqlQuery := fmt.Sprintf(`SELECT "Year", "Resident Population" FROM "dliden/2020_Census_Reapportionment"."Historical Apportionment" WHERE "Name" = 'Nevada';`)
rows, err := conn.Query(context.Background(), sqlQuery)
if err != nil {
fmt.Println("query error")
panic(err)
}
defer rows.Close()
for rows.Next() {
var Year int
var Population int
err = rows.Scan(&Year, &Population)
if err != nil {
panic(err)
}
fmt.Println(Year, Population)
}
err = rows.Err()
if err != nil {
panic(err)
}
}
You can always see the latest version of this code at https://github.com/bitdotioinc/bitdotio-golang-example
Updated 9 months ago