Go语言开发中PostgreSQL的应用

PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。
PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源代码是免费提供的。
PostgreSQL是跨平台的,可以在许多操作系统上运行,如Linux,FreeBSD,OS X,Solaris和Microsoft Windows等。
下面主要讲讲PostgreSQL在Go语言开发中的应用
首先创建相应的数据库和表

CREATE DATABASE medex
  WITH OWNER = kekang
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'C'
       LC_CTYPE = 'C'
       CONNECTION LIMIT = -1;

CREATE TABLE public.student
(
  uid integer NOT NULL DEFAULT nextval('student_uid_seq'::regclass),
  name character(256),
  sex character(5),
  address character(256),
  age smallint,
  CONSTRAINT uid PRIMARY KEY (uid)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public.student
  OWNER TO kekang;
一、数据库的链接
db, err := sql.Open("postgres", "user=kekang password=kkwangbiao dbname=medex sslmode=disable")
二、数据库的插入
func instertToPostgresDB(db *sql.DB) {
    stmt, err := db.Prepare("INSERT INTO student(name,sex,address,age) VALUES($1,$2,$3,$4)")
    _, err = stmt.Exec("zhangcheng", "F", "yuuyyuu小学", 2)
}
三、数据库的更新
func updatePostgresDB(db *sql.DB) {
    stmt, err := db.Prepare("update student set name=$1 where uid=$2")
    checkErr(err)
    res, err := stmt.Exec("zhangsanup", 1)
    checkErr(err)
    affected, err := res.RowsAffected()
    checkErr(err)
    fmt.Println(affected)
}
四、数据库的查询
func selectFromPostgresDB(db *sql.DB) {
    rows, err := db.Query("select * from student")
    for rows.Next() {
        var uid int
        var name string
        var sex string
        var address string
        var age int
        err = rows.Scan(&uid, &name, &sex, &address, &age)
        checkErr(err)
        fmt.Println(uid)
        fmt.Println(name)
        fmt.Println(sex)
        fmt.Println(address)
        fmt.Println(age)
    }
}
五、数据库的删除
func deleteFromPostgresDB(db *sql.DB) {
    stmt, err := db.Prepare("delete from student where uid=$1")
    checkErr(err)
    res, err := stmt.Exec(1)
    checkErr(err)
    affect, err := res.RowsAffected()
    fmt.Println(affect)
}

方法中用到的自定义函数
func checkErr(err error) {
    if err != nil {
        panic(err)
    }
}
同mySQL的比较

PostgreSQL是通过$1,$2这种方式来指定要传递的参数,
MySQL中通过?方式来传递参数,
在sql.Open函数中的dsn信息的格式也与MySQL的驱动中的dsn格式不一样

参考教程

PostgreSQL教程

    原文作者:小歪子go
    原文地址: https://www.jianshu.com/p/524d65f23d6a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞