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) } }
コメント