Skip to content

Instantly share code, notes, and snippets.

@nicerobot
Created January 28, 2014 03:24
Show Gist options
  • Select an option

  • Save nicerobot/8661811 to your computer and use it in GitHub Desktop.

Select an option

Save nicerobot/8661811 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"os"
_ "github.com/lib/pq"
"database/sql"
)
var selectStatement = `
select generate_series(1,100),current_date::text, current_time::text, random() limit 10
`
func getenv(s string, d string) string {
v := os.Getenv(s)
if v != "" {
return v
}
return d
}
func main() {
fmt.Printf("testing..\n")
var db *sql.DB
var err error
PGUSER := getenv("PGUSER","postgres")
PGDATABASE := getenv("PGDATABASE","postgres")
PGHOST := getenv("PGHOST","localhost")
PGPORT := getenv("PGPORT","5432")
PGURL := fmt.Sprintf("postgres://%s:@%s:%s/%s?sslmode=require",PGUSER,PGHOST,PGPORT,PGDATABASE)
db, err = sql.Open("postgres",PGURL)
if err != nil {
fmt.Printf("sql.Open error: %v\n",err)
return
}
defer db.Close()
err = doSelect(db)
if err != nil {
fmt.Printf("select error: %v\n",err)
return
}
}
func doSelect(db *sql.DB) error {
var stmt *sql.Stmt
var err error
stmt, err = db.Prepare(selectStatement)
if err != nil {
fmt.Printf("db.Prepare error: %v\n",err)
return err
}
var rows *sql.Rows
rows, err = stmt.Query()
if err != nil {
fmt.Printf("stmt.Query error: %v\n",err)
return err
}
defer stmt.Close()
for rows.Next() {
var series int
var current_date string
var current_time string
var r float64
err = rows.Scan(&series, &current_date, &current_time, &r)
if err != nil {
fmt.Printf("rows.Scan error: %v\n",err)
return err
}
fmt.Printf("%02d) current_date: %v current_time: %v random: %v\n",
series, current_date, current_time, r);
}
return nil
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment