Created
January 28, 2014 03:24
-
-
Save nicerobot/8661811 to your computer and use it in GitHub Desktop.
Example http://godoc.org/github.com/lib/pq almost completely swiped from https://groups.google.com/d/msg/golang-nuts/ttCR_qCqeAw/cbagvTHfpYsJ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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, ¤t_date, ¤t_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