當前位置:首頁 » 數據倉庫 » golang開發資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

golang開發資料庫

發布時間: 2023-03-08 17:49:09

Ⅰ go語言裡面實現對資料庫的操作,用什麼包好

盡量不要使用ORM,簡單的資料庫交互是會省很多事。
但是一旦查詢語句越來越復雜,關聯表越來越多,當你發現正在使用的ORM框架做不到時再換其他框架代價會很大。為什麼有那麼多框架?就是沒有一個框架能解決所有哪怕是大多數問題。
建議只使用資料庫驅動庫,database/sql庫,可以完成所有go語言與資料庫的交互。

Ⅱ go語言可以做什麼

go語言在高性能分布式系統領域有很好的開發效率,可以主要用於伺服器端的開發,能夠進行處理日誌、數據打包、虛擬機處理、文件系統、分布式系統、資料庫代理等。

Go(又稱Golang)是Google的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發的一種靜態強類型、編譯型語言。Go 語言語法與C相近,但功能上有:內存安全,GC(垃圾回收),結構形態及 CSP-style並發計算。

撰寫風格:

在Go中有幾項規定,當不匹配以下規定時編譯將會產生錯誤。

每行程序結束後不需要撰寫分號(;)。

大括弧({)不能夠換行放置。

if判斷式和for循環不需要以小括弧包覆起來。

Go亦有內置gofmt工具,能夠自動整理代碼多餘的空白、變數名稱對齊、並將對齊空格轉換成Tab。

Ⅲ go語言postgresql資料庫驅動怎麼用

PostgreSQL和MySQL比較,它更加龐大一點,因為它是用來替代Oracle而設計的。所以在企業應用中採用PostgreSQL是一個明智的選擇。

現在MySQL被Oracle收購之後,有傳聞Oracle正在逐步的封閉MySQL,,鑒於此,將來我們也許會選擇PostgreSQL而不是MySQL作為項目的後端資料庫。

1、驅動
Go實現的支持PostgreSQL的驅動也很多,因為國外很多人在開發中使用了這個資料庫。

https://github.com/bmizerany/pq 支持database/sql驅動,純Go寫的
https://github.com/jbarham/gopgsqldriver 支持database/sql驅動,純Go寫的
https://github.com/lxn/go-pgsql 支持database/sql驅動,純Go寫的
在下面的示例中我採用了第一個驅動,因為它目前使用的人最多,在github上也比較活躍。

2、實例代碼
資料庫建表語句:

復制代碼
CREATE TABLE userinfo
(
uid serial NOT NULL,
username character varying(100) NOT NULL,
departname character varying(500) NOT NULL,
Created date,
CONSTRAINT userinfo_pkey PRIMARY KEY (uid)
)
WITH (OIDS=FALSE);

CREATE TABLE userdeatail
(
uid integer,
intro character varying(100),
profile character varying(100)
)
WITH(OIDS=FALSE);
復制代碼

看下面這個Go如何操作資料庫表數據:增刪改查

復制代碼
package main

import (
"database/sql"
"fmt"
_ "github.com/bmizerany/pq"
)

func main() {
db, err := sql.Open("postgres", "user=astaxie password=astaxie dbname=test sslmode=disable")
checkErr(err)

//插入數據
stmt, err := db.Prepare("INSERT INTO userinfo(username,departname,created) VALUES($1,$2,$3) RETURNING uid")
checkErr(err)

res, err := stmt.Exec("astaxie", "研發部門", "2012-12-09")
checkErr(err)

//pg不支持這個函數,因為他沒有類似MySQL的自增ID
id, err := res.LastInsertId()
checkErr(err)

fmt.Println(id)

//更新數據
stmt, err = db.Prepare("update userinfo set username=$1 where uid=$2")
checkErr(err)

res, err = stmt.Exec("astaxieupdate", 1)
checkErr(err)

affect, err := res.RowsAffected()
checkErr(err)

fmt.Println(affect)

//查詢數據
rows, err := db.Query("SELECT * FROM userinfo")
checkErr(err)

for rows.Next() {
var uid int
var username string
var department string
var created string
err = rows.Scan(&uid, &username, &department, &created)
checkErr(err)
fmt.Println(uid)
fmt.Println(username)
fmt.Println(department)
fmt.Println(created)
}

//刪除數據
stmt, err = db.Prepare("delete from userinfo where uid=$1")
checkErr(err)

res, err = stmt.Exec(1)
checkErr(err)

affect, err = res.RowsAffected()
checkErr(err)

fmt.Println(affect)

db.Close()

}

func checkErr(err error) {
if err != nil {
panic(err)
}
}
復制代碼

從上面的代碼我們可以看到,PostgreSQL是通過$1,$2這種方式來指定要傳遞的參數,而不是MySQL中的?,另外在sql.Open中的dsn信息的格式也與MySQL的驅動中的dsn格式不一樣,所以在使用時請注意它們的差異。

還有pg不支持LastInsertId函數,因為PostgreSQL內部沒有實現類似MySQL的自增ID返回,其他的代碼幾乎是一模一樣

Ⅳ go語言有前景嗎

Go語言專門針對多處理器系統應用程序的編程進行優化,使用GO編譯的程序可以媲美C或者C++代碼的速度,而且更加安全、支持並行進程。不僅可以開發Web,還可以開發底層,知乎就是golang開發的。區塊鏈的首選語言就是Go,以太坊,超級賬本都是基於Go語言。
Go的目標是希望提升現有編程語言對程序庫等依賴性的管理,這些軟體元素會被應用程序反復調用。由於存在並行編程模式,因此這一語言也被設計用來解決多處理器的任務。
Google對Go寄予厚望,其設計是讓軟體充分發揮多核心處理器同步多工的優點,並可解決面向對象程序設計的麻煩,它具有現代的程序語言特色,如垃圾回收,幫助程序設計師處理瑣碎但重要的內存管理問題。Go的速度非常快,幾乎和C或C++程序一樣快,且能夠快速製作程序。
目前,Go語言主要用於伺服器端開發,其定位是用來開發大型軟體的,適合於很多程序員一起開發大型軟體,並且開發周期長,支持雲計算的網路服務。Go語言能夠讓程序員快速開發,並且在軟體不斷的增長過程中,它能讓程序員更容易地進行維護和修改。它融合了傳統編譯型語言的高效性和腳本語言的易用性和富於表達性。
Go語言作為伺服器編程語言,很適合處理日誌、數據打包、虛擬機處理、文件系統、分布式系統、資料庫代理等;網路編程方面,Go語言廣泛應用於Web應用、API應用、下載應用等,除此之外,Go語言還可用於內存資料庫和雲平台領域,目前國外很多雲平台都是採用Go開發的,所以說Go語言的開發前景還是很不錯的!