Golang : Update database with GORM example
A simple tutorial on how to use GORM(Golang Object Relational Map) to connect to a MySQL/MariaDB database and UPDATE data.
Here you go!
package main
import (
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
"time"
)
// Activities table SQL :
// id bigint(20) AUTO_INCREMENT
// username varchar(50)
// created_on timestamp
// action char(1)
// description varchar(300)
// visibility char(1)
// NOTE : In the struct, CreatedOn will be translated into created_on in sql level
type Activities struct {
Id int `sql:"AUTO_INCREMENT"`
Username string `sql:"varchar(50);unique"`
CreatedOn time.Time `sql:"timestamp"`
Action string `sql:"type:char(1)"`
Description string `sql:"type:varchar(300)"`
Visibility string `sql:"type:char(1)"`
}
func main() {
dbConn, err := gorm.Open("mysql", "username:password@tcp(x0.xx0.xxx.xxx:3306)/db_name?charset=utf8&parseTime=true")
if err != nil {
fmt.Println(err)
}
dbConn.DB()
dbConn.DB().Ping()
dbConn.DB().SetMaxIdleConns(10)
dbConn.DB().SetMaxOpenConns(100)
activity := Activities{
Username: "testuser",
CreatedOn: time.Now().UTC(),
Description: "Testing",
Visibility: "S",
}
dbConn.Create(&activity)
// use a clean Activities struct for update purpose
act := Activities{}
// Get the last record
dbConn.Last(&act)
fmt.Println("Before update: ", act)
fmt.Println("Created on : ", act.CreatedOn)
currentId := act.Id
fmt.Println("Current ID : ", currentId)
// update the last activity struct
act.Username = "test test test"
act.Description = "This is a test test test description"
act.Visibility = "A"
//dbConn.Save(&act) // update current id
// best practice is to include the id for the update statement
dbConn.Where("id = ?", currentId).Save(&act)
// Get the last record - again
dbConn.Last(&act)
fmt.Println("After update : ", act)
}
Sample output :
Before update: {27570 testuser 2015-07-29 03:29:44 +0000 UTC Testing S}
Created on : 2015-07-29 03:29:44 +0000 UTC
Current ID : 27570
After update : {27570 test test test 2015-07-29 03:29:44 +0000 UTC This is a test test test description A}
References :
https://github.com/jinzhu/gorm
https://www.socketloop.com/tutorials/golang-gorm-read-from-database-example
See also : Golang : GORM read from database example
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+6.2k Golang : Combine slices of complex numbers and operation example
+23.2k Golang : Check if element exist in map
+9.9k Golang : cannot assign type int to value (type uint8) in range error
+14.5k Golang : Search folders for file recursively with wildcard support
+19.6k Golang : Reset or rewind io.Reader or io.Writer
+12.9k Golang : Linear algebra and matrix calculation example
+7.4k Golang : Error reading timestamp with GORM or SQL driver
+30.9k Golang : Get local IP and MAC address
+5k PHP : Hide PHP version information from curl
+8.6k Golang : What is the default port number for connecting to MySQL/MariaDB database ?
+29.3k Golang : How to declare kilobyte, megabyte, gigabyte, terabyte and so on?
+5.9k Golang : How to get capacity of a slice or array?