日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2024/4/17 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。