Connecting with Go
This guide walks you through setting up a Go application to connect to a Hydra database, using the PostgreSQL-compatible lib/pq
driver, and running a basic query to verify the connection.
Variables
To connect to a Hydra database, you only need one environment variable — the connection URI. This URI contains all the necessary information like username, password, host, port, and database name.
Variable |
Description |
Purpose |
---|---|---|
|
Full Hydra (PostgreSQL-compatible) connection string from the Elestio service overview |
Provides all credentials and connection details in a single URI |
A typical URI format looks like:
postgresql://<USER>:<PASSWORD>@<HOST>:<PORT>/<DATABASE>
You can find the details needed in the URI from the Elestio service overview details. Copy and replace the variables carefully in the URI example provided above.
Prerequisites
- Install Go
- Check if Go is installed:
go version
-
- If not, download and install Go: https://go.dev/dl/
- Install pq Driver
go get github.com/lib/pq
Code
Once all prerequisites are set up, create a new file named main.go
and add the following code, and replace the HYDRA_URI
with actual link or in environment setup as you wish:
package main
import (
"database/sql"
"fmt"
"log"
"os"
_ "github.com/lib/pq"
)
func getDBConnection(connStr string) (*sql.DB, error) {
db, err := sql.Open("postgres", connStr)
if err != nil {
return nil, fmt.Errorf("failed to open database connection: %v", err)
}
if err := db.Ping(); err != nil {
return nil, fmt.Errorf("failed to ping database: %v", err)
}
return db, nil
}
func main() {
// Get the Hydra connection string from environment variable
connStr := os.Getenv("HYDRA_URI")
if connStr == "" {
log.Fatal("HYDRA_URI environment variable not set")
}
db, err := getDBConnection(connStr)
if err != nil {
log.Fatal(err)
}
defer db.Close()
query := "SELECT current_database(), current_user, version()"
row := db.QueryRow(query)
var dbName, user, version string
if err := row.Scan(&dbName, &user, &version); err != nil {
log.Fatal("Failed to scan row:", err)
}
fmt.Printf("Connected to Hydra\nDatabase: %s\nUser: %s\nVersion: %s\n", dbName, user, version)
}
Set your Hydra URI as an environment variable:
export HYDRA_URI=postgresql://user:password@host:port/database
To execute the script, open the terminal or command prompt and navigate to the directory where main.go
. Once in the correct directory, run the script with the command
go run main.go
If successful, you’ll see output like:
Connected to Hydra
Database: elestio
User: postgres
Version: PostgreSQL 14.13 (Debian 14.13-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
No Comments