go语言操作PostgreSQL数据库( 二 )

插入
package mainimport ("database/sql""fmt"_ "github.com/lib/pq")const (host= "localhost"port= 5432user= "postgres"password = "wangshubo123"dbname= "test")type Teacher struct {IDintAge int}func main() {psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+"password=%s dbname=%s sslmode=disable",host, port, user, password, dbname)db, err := sql.Open("postgres", psqlInfo)if err != nil {panic(err)}defer db.Close()err = db.Ping()if err != nil {panic(err)}fmt.Println("Successfully connected!")sqlStatement := `INSERT INTO teacher (id, age)VALUES ($1, $2)RETURNING id`id := 3err = db.QueryRow(sqlStatement, 3, 19).Scan(&id)if err != nil {panic(err)}fmt.Println("New record ID is:", id)}再运行一次 , 错误:panic: pq: 重复键违反唯一约束”teacher_pkey”
查询
package mainimport ("database/sql""fmt"_ "github.com/lib/pq")const (host= "localhost"port= 5432user= "postgres"password = "wangshubo123"dbname= "test")type Teacher struct {IDintAge int}func main() {psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+"password=%s dbname=%s sslmode=disable",host, port, user, password, dbname)db, err := sql.Open("postgres", psqlInfo)if err != nil {panic(err)}defer db.Close()err = db.Ping()if err != nil {panic(err)}fmt.Println("Successfully connected!")sqlStatement := `SELECT * FROM teacher WHERE id=$1;`var teacher Teacherrow := db.QueryRow(sqlStatement, 1)err = row.Scan(&teacher.ID, &teacher.Age)switch err {case sql.ErrNoRows:fmt.Println("No rows were returned!")returncase nil:fmt.Println(teacher)default:panic(err)}}



推荐阅读