Golang is a widely used language for building scalable and reliable web applications.
When it comes to Storing data (relational), MySQL is one of the old and preferred ways as a database for many organisations.
This blog post will look at how to use Golang with MySQL by establishing the connection and printing the version using a simple query.
In upcoming blog posts, we will see advanced operations.
Prerequisites
To follow along with this tutorial, you should have the following installed on your machine:
- Golang
- MySQL
Installing the MySQL driver
The first step is to install the MySQL driver for Golang. This driver lets us connect to a MySQL database from our Golang application. To install the MySQL driver, open a terminal and run the following command:
go get -u github.com/go-sql-driver/mysql
Here’s the sample code. Take a minute and go through the code. Afterwards, we will discuss one line at a time.
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/testdb")
defer db.Close()
if err != nil {
log.Fatal(err)
}
pingErr := db.Ping()
if pingErr != nil {
log.Fatal(pingErr)
}
fmt.Println("Connected!")
var version string
scanEerr := db.QueryRow("SELECT VERSION()").Scan(&version)
if scanErr != nil {
log.Fatal(scanErr)
}
fmt.Println(version)
}
Let’s understand one by one
we need to connect to the MySQL database from our Golang application. To do this, we will use the
database/sql
package in the Go standard library. This package provides a common interface for working with different SQL databases.- underscore alias
_
will import the package but will use it explicitly. It will be indirectly used for initialising the database drivers.
- underscore alias
import (
...
"database/sql"
_ "github.com/go-sql-driver/mysql"
...
)
Now, we need to open a connection to the MySQL database. We can do this by calling the
sql.Open
()
function and passing in the MySQL driver name and a connection string.- The first field is the name of the driver (
mysql
in this case) - The second field is the DSN (Data source name)format which consists of username, password, protocol, address and name of the database, etc.
- The first field is the name of the driver (
db, err := sql.Open("mysql", "username:password@tcp(127.0.0.1:3306)/testdb")
- Ensure that the connection is properly closed when the application exits with the help of the following
defer
statement.
defer db.Close()
- Let’s ping the database to verify that our program can connect to the database. If this function doesn’t return any error (
nil
), then we can establish the connection successfully.
pingErr := db.Ping()
- The
QueryRow
the function executes a query that will return at most one row. TheScan
function will store output from the matched row into theversion
variable.
var version string
scanErr := db.QueryRow("SELECT VERSION()").Scan(&version)
The output of the program will be as shown below:
$ go run main.go
Connected!
5.7.38
Thank you for reading. If you have any questions, do let me know in the comments.
I hope you learned something new from this blog post. Click here to learn about me and how you can support my work, Thank you.