Golang : GORM create record or insert new record into database example
Continuing from previous tutorial on how to read record from database with GORM. This time we learn how to create or insert new record into a database.
In this example, we will insert one record with GORM and also learn how to mitigate SQL table field name with underscore.
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(xxx.xxx.xxx.xxx:3306)/databasename?charset=utf8&parseTime=true")
if err != nil {
fmt.Println(err)
}
dbConn.DB()
dbConn.DB().Ping()
dbConn.DB().SetMaxIdleConns(10)
dbConn.DB().SetMaxOpenConns(100)
// omit/skip field with auto increment and those with blank/nil/empty data
activity := Activities{
Username: "testuser",
CreatedOn: time.Now().Local(),
Description: "Testing",
Visibility: "S",
}
dbConn.Create(&activity)
// Get the last record
dbConn.Last(&activity)
fmt.Println(activity)
}
NOTE : Without the &parseTime=true
parameter in the dbConn configuration. The GORM driver will have problem reading(scanning) and translating the SQL timestamp.
References :
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
+8.4k Linux/Unix : fatal: the Postfix mail system is already running
+13.4k Golang : How to get year, month and day?
+11.8k Golang : How to parse plain email text and process email header?
+7.3k Golang : Individual and total number of words counter example
+7k Golang : Gorrila mux.Vars() function example
+5.3k Golang : What is StructTag and how to get StructTag's value?
+27.3k Golang : dial tcp: too many colons in address
+33.9k Golang : Create x509 certificate, private and public keys
+7k Golang : Array mapping with Interface
+14.9k Golang : package is not in GOROOT during compilation
+8.8k Golang : GMail API create and send draft with simple upload attachment example
+13.7k Golang : convert(cast) string to float value