go中mysql連線 Go 連線MySQL

2021-10-19 15:51:30 字數 1885 閱讀 7204

go操作mysql

連線go語言中的database/sql包提供了保證sql或類sql資料庫的泛用介面,並不提供具體的資料庫驅動。使用database/sql包時必須注入(至少)乙個資料庫驅動。

我們常用的資料庫基本上都有完整的第三方實現。例如:mysql驅動

使用mysql驅動

func open(drivername, datasourcename string) (*db, error)

open開啟乙個dirvername指定的資料庫,datasourcename指定資料來源,一般包至少括資料庫檔名和(可能的)連線資訊。

初始化連線

open函式可能只是驗證其引數,而不建立與資料庫的連線。如果要檢查資料來源的名稱是否合法,應呼叫返回值的ping方法。

返回的db可以安全的被多個goroutine同時使用,並會維護自身的閒置連線池。這樣一來,open函式只需呼叫一次。很少需要關閉db。

// 定義乙個全域性物件db

var db *sql.db

// 定義乙個初始化資料庫的函式

func initdb() (err error) {

// dsn:data source name

dsn := "user:password@tcp(127.0.0.1:3306)/test"

// 不會校驗賬號密碼是否正確

// 注意!!!這裡不要使用:=,我們是給全域性變數賦值,然後在main函式中使用全域性變數db

db, err = sql.open("mysql", dsn)

if err != nil {

return err

// 嘗試與資料庫建立連線(校驗dsn是否正確)

err = db.ping()

if err != nil {

return err

return nil

func main() {

err := initdb() // 呼叫輸出化資料庫的函式

if err != nil {

fmt.printf("init db failed,err:%v\n", err)

return

其中sql.db是乙個資料庫(操作)控制代碼,代表乙個具有零到多個底層連線的連線池。它可以安全的被多個go程同時使用。database/sql包會自動建立和釋放連線;它也會維護乙個閒置連線的連線池。

**:package main

import (

"database/sql"

"fmt"

_ "github.com/go-sql-driver/mysql" //執行init()函式,裡面向sql註冊了mysqldriver

// go連線mysql示例

func main() {

// 資料庫資訊

// 使用者名稱:密碼@tcp(ip:埠)/資料庫的名字

dsn := "root:root@tcp(127.0.0.1:3306)/goday10"

// 連線資料庫

//驅動名字 //資料來源

db, err := sql.open("mysql", dsn) // 不會校驗使用者名稱和密碼是否正確

if err != nil { // dsn格式不正確的時候會報錯

fmt.printf("dsn:%s invalid, err:%v\n", dsn, err)

return

err = db.ping() // 嘗試連線資料庫

if err != nil {

fmt.printf("open %s failed, err:%v\n", dsn, err)

return

fmt.println("連線資料庫成功!")

go連線mysql集群 Go連線MYSQL

go原生提供了連線資料庫操作的支援,在用 golang進行開發的時候,如果需要在和資料庫互動,則可以使用database sql包。這是乙個對關係型資料庫的通用抽象,它提供了標準的 輕量的 面向行的介面。在go中訪問資料庫需要用到sql.db介面 它可以建立語句 statement 和事務 tran...

go mysql連線 Go連線MYSQL

go原生提供了連線資料庫操作的支援,在用 golang進行開發的時候,如果需要在和資料庫互動,則可以使用database sql包。這是乙個對關係型資料庫的通用抽象,它提供了標準的 輕量的 面向行的介面。在go中訪問資料庫需要用到sql.db介面 它可以建立語句 statement 和事務 tran...

go連線mysql GO連線MySQL

go語言沒有提供官方的資料庫驅動,所以要安裝第三方函式庫。多行查詢 多行查詢db.query 執行一次查詢,返回多行結果 即rows 一般用於執行select命令。引數args表示query中的佔位引數。具體示例 查詢多條資料示例 func querymultirowdemo fmt.printf ...