· 10 years ago · Aug 19, 2016, 03:58 AM
1package main
2
3import (
4 "database/sql"
5 "fmt"
6 "log"
7
8 _ "github.com/bmizerany/pq"
9)
10
11/* PostgreSQL in Go: Create table & Insert row
12
131. Create the user and database from the psql cli, as an admin user:
14
15% psql
16postgres=# CREATE USER alpha_user with password 'alpha01';
17postgres=# CREATE DATABASE alpha_db01 OWNER alpha_user;
18
19*/
20
21// 2. This table will be created (If it doesnt already exist) so that we can insert some shit:
22var create_person_table = `
23CREATE TABLE IF NOT EXISTS person(
24 id serial primary key,
25 username varchar not null,
26 first_name varchar,
27 last_name varchar,
28 email varchar
29);`
30
31// 3. The admin user will be inserted
32var insert_admin_user = `
33INSERT INTO person(username, first_name, last_name, email)
34VALUES('admin', 'Admin', 'Administrator', 'admin@localhost');
35`
36
37// 4. The db, which represents a database - not a database connection, is defined globally.
38var db sql.DB
39
40func main() {
41 dbuser := "alpha_user"
42 dbname := "alpha_db01"
43 dbpass := "alpha01"
44 dbport := "5432"
45
46 db, err := sql.Open("postgres",
47 fmt.Sprintf("dbname=%s user=%s password=%s port=%s sslmode=disable", dbname, dbuser, dbpass, dbport))
48
49 defer db.Close()
50
51 if err != nil {
52 log.Panic(err)
53 }
54
55 err = db.Ping()
56 if err != nil {
57 log.Panic(err)
58 }
59
60 _, err = db.Exec(create_person_table)
61 if err != nil {
62 log.Panic(err)
63 }
64
65 fmt.Println("Table created!")
66
67 _, err = db.Exec(insert_admin_user)
68 if err != nil {
69 log.Panic(err)
70 }
71
72 fmt.Println("Admin user created")
73}