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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql b tree图_MySQL索
- 下一篇: python卸载后安装不上_[宜配屋]听