Go MySQL

Go + MySQL

To use MySQL from Go, we will use 2 libraries.

database/sql and github.com/go-sql-driver/mysql

sql is common interface for SQL (postres, MySQL etc…) go-sql-driver/mysql is MySQL driver.

To get go-sql-driver/mysql, use go get

go get github.com/go-sql-driver/mysql

Create table and insert test data

Setting is

  • User : root
  • Password : atmarkplant
  • DB name : gosample

Create following table and insert 2 records

CREATE TABLE `gosample`.`posts` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `content` VARCHAR(255) NULL,
  `author` VARCHAR(255) NULL,
  PRIMARY KEY (`id`));

INSERT INTO posts (content, author) VALUES ('ABDCE', 'Mumu-man');
INSERT INTO posts (content, author) VALUES ('teketeke', 'Takeyan');

Example

In this entry, run select clause and set data into struct.

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/go-sql-driver/mysql"
)

type Post struct {
	Id      int
	Content string
	Author  string
}

func main() {
	db, err := sql.Open("mysql", "root:atmarkplant@/gosample")
	// user:password@/dbname
	log.Println("Connected to MySQL.")

	if err != nil {
		log.Fatal(err)
	}
	defer db.Close()

	// SELECT
	rows, err := db.Query("SELECT * FROM posts")
	defer rows.Close()

	if err != nil {
		log.Fatal("Cannot get data")
		panic(err.Error())
	}

	for rows.Next() {
		var post Post
		err := rows.Scan(&post.Id, &post.Content, &post.Author)

		if err != nil {
			log.Fatal("Cannot retrieve")
			panic(err.Error())
		}
		fmt.Println(post.Id, post.Content, post.Author)
	}
}

golang
スポンサーリンク
Professional Programmer2

コメント