生命不止,继续 Go go go !!!

之前关于golang操作数据库的博客:

今天跟大家分享golang中使用PostgreSQL数据库。

何为PostgreSQL

PostgreSQL is a powerful, open source object-relational database system.

PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。

特点

PostgreSQL可在所有主要操作系统(即Linux,UNIX(AIX,BSD,HP-UX,SGI IRIX,Mac OS X,Solaris,Tru64)和Windows等)上运行

PostgreSQL支持文本,图像,声音和视频,并包括用于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接口

PostgreSQL支持SQL的许多功能,例如复杂SQL查询,SQL子选择,外键,触发器,视图,事务,多进程并发控制(MVCC),流式复制(9.0),热备(9.0))

在PostgreSQL中,表可以设置为从“父”表继承其特征

可以安装多个扩展以向PostgreSQL添加附加功能

PostgreSQL 与 MySQL 相比,优势何在?

知乎上有大神们的讨论,可以看一看:https://www.zhihu.com/question/20010554

Windows下安装PostgreSQL

下载速度不是很快,稍安勿躁。

安装

下一步,选择安装文件夹,选择数据所在位置,填写密码,端口号,选择运行时语言环境等。

默默等待安装。

使用pgAdmin

打开pgAdmin,要输入之前设置的密码

创建数据库

在Databases(1)上右键,Create, Database

删除数据库

创建表

插入数据

使用SQL Shell(psql)

创建数据库

create database name;

删除数据库

drop database name;

如果出现错误的话,请先断开其他对该数据库的连接。

创建表

CREATE TABLE public.student ( id integer, name character(1)[] COLLATE pg_catalog."default" ) WITH ( OIDS = FALSE ) TABLESPACE pg_default;

ALTER TABLE public.student OWNER to postgres;

插入数据

INSERT INTO public.teacher(

id, age)

VALUES (2,34);

查询

SELECT * FROM public.teacher;

Go中使用PostgreSQL

github.com/lib/pq

Pure Go Postgres driver for database/sql

连接

package main

import (

"database/sql"

"fmt"

_ "github.com/lib/pq"

)

const (

host = "localhost"

port =5432

user = "postgres"

password = "your_password"

dbname = "test"

)

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!")

}

插入

package main

import (

"database/sql"

"fmt"

_ "github.com/lib/pq"

)

const (

host = "localhost"

port =5432

user = "postgres"

password = "wangshubo123"

dbname = "test"

)

type Teacher struct {

ID int

Age 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 :=3

err = db.QueryRow(sqlStatement,3,19).Scan(&id)

if err != nil {

panic(err)

}

fmt.Println("New record ID is:", id)

}

再运行一次,错误:panic: pq: 重复键违反唯一约束”teacher_pkey”

查询

package main

import (

"database/sql"

"fmt"

_ "github.com/lib/pq"

)

const (

host = "localhost"

port =5432

user = "postgres"

password = "wangshubo123"

dbname = "test"

)

type Teacher struct {

ID int

Age 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 Teacher

row := db.QueryRow(sqlStatement,1)

err = row.Scan(&teacher.ID, &teacher.Age)

switch err {

case sql.ErrNoRows:

fmt.Println("No rows were returned!")

return

case nil:

fmt.Println(teacher)

default:

panic(err)

}

}

pq和mysql_Go实战--go语言操作PostgreSQL数据库(github.com/lib/pq)相关推荐

  1. psql+加载mysql数据库_Go实战--go语言操作PostgreSQL数据库(github.com/lib/pq)

    生命不止,继续 Go go go !!! 之前关于golang操作数据库的博客: 今天跟大家分享golang中使用PostgreSQL数据库. 何为PostgreSQL PostgreSQL is a ...

  2. go sqlite mysql_Go实战--go语言操作sqlite数据库(The way to go)

    生命不止,继续 go go go !!! 继续与大家分享,go语言的实战,今天介绍的是如何操作sqlite数据库. 何为sqlite3? SQLite is a self-contained, hig ...

  3. golang基础-Postgresql使用、Go中使用PostgreSQL(github.com/lib/pq学习)

    文章目录 postgresql介绍 postgresql安装使用(mac下) Go中使用PostgreSQL(github.com/lib/pq学习) 连接postgres 查询postgres 单条 ...

  4. Go语言sqlx库操作PostgreSQL数据库增删改查

    0. 引用 sqlx地址:https://github.com/jmoiron/sqlx PostgreSQL官网:https://www.postgresql.org/ 1. PostgreSQL安 ...

  5. [Golang数据库专题4]Golang语言操作PostgreSQL进行增删改查

    目录 一. 引言 1.1 PostgreSQL与MYSQL 1.2 Golang支持PostgreSQl驱动 二.编码实践 2.1 建表语句 2.2 CRUD代码 2.3 验证结果 三.结语 一. 引 ...

  6. 使用PostgREST的RestAPI操作PostgreSQL数据库教程

    使用PostgREST的RestAPI操作PostgreSQL数据库教程 表和视图 公开的架构中的所有视图和表均可被查询的活动数据库角色访问,并且可供活动数据库角色访问.它们暴露在一级深度路线中.例如 ...

  7. C语言连接PostgreSQL数据库

    文章目录 一.源代码说明 二.概述 三.connection类 四.sqlstatement类 五.程序流程 1.无结果集SQL的程序的流程 2.有结果集SQL的程序的流程 六.示例程序 1.创建超女 ...

  8. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  9. psycopg2 mysql_使用psycopg2操作PostgreSQL数据库之二

    使用psycopg2操作PostgreSQL数据库之二 佣工7001 1. 连接数据库: import psycopg2 import psycopg2.extras conn = psycopg2. ...

最新文章

  1. vs调试时,变量值以十六进制显示
  2. 远程定位gps linux,GPS(NMEA)数据解析
  3. who whoami who am i的区别
  4. Leetcode题库 145.二叉树的后序遍历(递归 C实现)
  5. C++开发WPF,Step by Step
  6. Oracle 配置监听和本地网络服务
  7. Java程序中fix time_Java Position.setFixTime方法代码示例
  8. 【4747】java语言程序设计(一)2011年10月考试复习资料_全国2011年10月自考Java语言程序设计(一)试题3...
  9. jQuery.treetable使用及异步加载
  10. 《自己动手做交互系统》——1.2 制作过程
  11. pandas.Series
  12. [Android] View控件显示隐藏动画效果
  13. Spring Boot ContentNegotiation 内容协商
  14. Linux系统配置jdk
  15. 傅里叶变换与傅里叶级数理解
  16. base64加密解密
  17. Flutter 中文文档:使用 Packages
  18. r7 6800u核显相当于什么显卡
  19. jsd2205-csmall-passport(Day13)
  20. shell企业面试题

热门文章

  1. 如何去掉XP正版验证
  2. SSM框架视频点播网站-视频播放网站-电影在线观看网站-电视剧在线欣赏网站 (idea开发javaweb-php-asp.netC#-j2ee-springboot)
  3. 计算机虚拟卡配置怎么查,如何检查计算机图形卡的配置
  4. 手把手教你用20行Python代码制作飞花令小程序!
  5. 使用OpenCV和Python,OCR识别数字
  6. revit软件中如何把梁绘制在体量面上?及梁的快速转化?
  7. iOS9 NetworkExtension使用
  8. java计算机毕业设计公务用车管理智慧云服务监管平台源程序+mysql+系统+lw文档+远程调试
  9. SAP之FPM卷五:FPM开发实例-完成主页面功能(1)
  10. 2年工作经验拿到阿里和爱奇艺双offer是一种什么感觉?附上大佬的面经帮助到大家!