psql+加载mysql数据库_Go实战--go语言操作PostgreSQL数据库(github.com/lib/pq)
生命不止,继续 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)
}
}
psql+加载mysql数据库_Go实战--go语言操作PostgreSQL数据库(github.com/lib/pq)相关推荐
- pq和mysql_Go实战--go语言操作PostgreSQL数据库(github.com/lib/pq)
生命不止,继续 Go go go !!! 之前关于golang操作数据库的博客: 今天跟大家分享golang中使用PostgreSQL数据库. 何为PostgreSQL PostgreSQL is a ...
- [Golang数据库专题4]Golang语言操作PostgreSQL进行增删改查
目录 一. 引言 1.1 PostgreSQL与MYSQL 1.2 Golang支持PostgreSQl驱动 二.编码实践 2.1 建表语句 2.2 CRUD代码 2.3 验证结果 三.结语 一. 引 ...
- 安卓加载mysql数据到列表里_Android如何从数据库中加载海量数据
在Android3.0之前,很多应用程序响应性能方面有缺陷,其中比较典型的错误行为是在UI线程中执行了查询数据操作,尤其是一次性从database查出大量数据并加载到ListView里,用这种方式载入 ...
- spark1.4加载mysql数据 创建Dataframe及join操作连接方法问题
首先我们使用新的API方法连接mysql加载数据 创建DF import org.apache.spark.sql.DataFrame import org.apache.spark.{SparkCo ...
- go sqlite mysql_Go实战--go语言操作sqlite数据库(The way to go)
生命不止,继续 go go go !!! 继续与大家分享,go语言的实战,今天介绍的是如何操作sqlite数据库. 何为sqlite3? SQLite is a self-contained, hig ...
- IDEA加载mysql 报:java.sql.SQLException: Unknown system variable ‘query_cache_size‘
IDEA在加载mysql数据库时 报如下错误: java.sql.SQLException: Unknown system variable 'query_cache_size' 翻译:java.sq ...
- 正确加载MySQL驱动的语句_正确加载MySQL驱动的语句_____________________;_学小易找答案...
[多选题]电子图书的特点是 [简答题] [单选题]为了准备病理学考试,王同学想在图书馆借一本人民卫生出版社出版的熊小亮编写的<病理学试题库>,经过检索发现该书都被借出去了 , 最方便快捷的 ...
- sparksql加载mysql表中的数据
sparksql加载mysql表中的数据 <dependency><groupId>mysql</groupId><artifactId>mysql-c ...
- Apache+PHP 无法加载 MySql 模块的问题
症状 1. php中无法使用 mysql_connect() 函数 2. phpinfo() 无法看到 mysql 模块 原因 在apache安装目录里查看错误日志文件,会看到这样的信息: PHP ...
最新文章
- 栈与队列5——汉诺塔问题
- python 子图_python 实现在一张图中绘制一个小的子图方法
- 中国联通与阿里宣布相互开放云计算资源
- 从玉农业谋定塞外-丰收节交易会·林裕豪:巴彦淖尔深圳签约
- python的pip换源_浅析Python3 pip换源问题
- oneproxy检测主从复制同步延迟
- visio图标_弱电间机柜原型图整理,可编辑!(Excel,visio,CAD)
- 【一类题】二维数点的几个做法
- MongoDB (六) MongoDB 集合操作
- python 逻辑运算的短路问题
- android仿IOS,滑动隐藏底部ScrollView
- 计算机显卡模式,电脑bios设置显卡图解
- 安卓手机修改ntp服务器,修改安卓手机ntp服务器地址
- 经典英文linux书籍,Linux内核编程必读(英文版),丛书名: 经典原版书库
- 华三交换机配置access命令_华三交换机查看配置命令是什么
- Serial Scope——基于QCustomPlot的串口虚拟示波器开发过程
- 面试——路径、转发与重定向的区别
- Crack:GrapeCity Documents for Excel 6.0.1
- cloud-utils
- 读取xlsx的sheet
热门文章
- JavaScript禁用鼠标右键菜单
- 编写你的第一个 Django 应用,第 5 部分
- 2018年第九届蓝桥杯C/C++ C组国赛 —— 第四题:约瑟夫环
- 征战蓝桥 —— 2016年第七届 —— C/C++A组第2题——生日蜡烛
- rosdep update 报错: File “/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py“, line 829
- 【STM32】随机数发生器相关函数和类型
- 【C++】 C++标准模板库(九) Bitsets
- [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档
- openssh升级sftp_Centos7 升级 openSSH 到7.9p1的详细步骤
- LeetCode 190. Reverse Bits (算32次即可)