2 回答

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個贊
我沒有得到你的代碼的結(jié)構(gòu),但從主要上下文(插入查詢)你應(yīng)該做這樣的事情:
package main
import (
"context"
"database/sql"
"log"
)
var db *sql.DB
type User struct {
ID int `db:"id" json:"id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
DeletedAt time.Time `db:"deleted_at" json:"deleted_at"`
Username string `db:"username" json:"username"`
Password string `db:"password" json:"password"`
FirstName string `db:"first_name" json:"first_name"`
LastName string `db:"last_name" json:"last_name"`
Phone string `db:"phone" json:"phone"`
Status bool `db:"status" json:"status"`
Addrs []UserAddress
}
func main() {
users := []User {
{...User 1 data...},
{...User 2 data...},
}
stmt, err := db.Prepare("INSERT INTO users (id, created_at, updated_at, deleted_at, username, password, first_name, last_name, phone, status) VALUES($1, now(), now(), $2, $3, $4, $5, $6, $7, $8)")
if err != nil {
log.Fatal(err)
}
defer stmt.Close() // Prepared statements take up server resources and should be closed after use.
for id, user := range users {
if _, err := stmt.Exec(id+1, user.Username, user.Password,... other data); err != nil {
log.Fatal(err)
}
}
}
此外,您可以使用強(qiáng)大的Gorm包來使用所有關(guān)系數(shù)據(jù)庫。

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個贊
我使用這個助手來插入。
使用查詢語法如下:
INSERT INTO checks (
status) VALUES (:status)
returning id;
樣本結(jié)構(gòu)
type Row struct {
Status string `db:"status"`
}
// Insert inserts row into table using query SQL command
// table used only for loging, actual table name defined in query
// function expects Query with named parameters
func Insert(ctx context.Context, row interface{}, query string, table string, tx *sqlx.Tx) (int64, error) {
// convert named query to native parameters format
query, args, err := tx.BindNamed(query, row)
if err != nil {
return 0, fmt.Errorf("cannot bind parameters for insert into %q: %w", table, err)
}
var id struct {
Val int64 `db:"id"`
}
err = sqlx.GetContext(ctx, tx, &id, query, args...)
if err != nil {
return 0, fmt.Errorf("cannot insert into %q: %w", table, err)
}
return id.Val, nil
}
- 2 回答
- 0 關(guān)注
- 106 瀏覽
添加回答
舉報