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
+23.9k Golang : Convert IP address string to long ( unsigned 32-bit integer )
+11.3k Golang : Arithmetic operation with numerical slices or arrays example
+13.2k Golang : Overwrite previous output with count down timer
+7.8k Golang : Write multiple lines or divide string into multiple lines
+6.7k Golang : Test if an input is an Armstrong number example
+6k Golang : Get Alexa ranking data example
+4.2k Unix/Linux : secure copying between servers with SCP command examples
+17.3k Golang : Get path name to current directory or folder
+10.5k Golang : Sort and reverse sort a slice of runes
+7.2k Golang : Number guessing game with user input verification example
+6.6k Golang : Gorrila set route name and get the current route name
+12.6k Golang : Tutorial on loading GOB and PEM files