Skip to content

Instantly share code, notes, and snippets.

@brandonrachal
Created April 20, 2014 16:56
Show Gist options
  • Save brandonrachal/11119079 to your computer and use it in GitHub Desktop.
Save brandonrachal/11119079 to your computer and use it in GitHub Desktop.
Connecting to a postgres database in Go Lang
package main
// go get github.com/lib/pq
import (
_ "github.com/lib/pq"
"database/sql"
"fmt"
)
func main() {
db, err := sql.Open("postgres", "user=marcmaron password=boomerlives! dbname=wtfpodcast")
if err != nil { fmt.Println("Connection Error: ", err); return }
defer db.Close()
rows, err := db.Query("SELECT * FROM posts where id = 4")
if err != nil { fmt.Println("Query Error: ", err); return }
columns, err := rows.Columns()
if err != nil { fmt.Println("Columns Error: ", err); return }
values := make([]interface{}, len(columns))
valuePtrs := make([]interface{}, len(columns))
for i, _ := range columns { valuePtrs[i] = &values[i] }
for rows.Next() {
if err := rows.Scan(valuePtrs...); err != nil {
fmt.Println("Scan Error: ", err); return
}
for i, column_name := range columns {
var v interface{}
b, ok := values[i].([]byte);
if (ok) {
v = string(b)
} else {
v = values[i]
}
fmt.Println(column_name, v)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment