数据库操作
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

255 lines
7.5 KiB

package dbquery
import (
"encoding/json"
"fmt"
"git.tetele.net/tgo/helper"
"log"
"strings"
"testing"
"time"
)
func CreateData(dbname string, data []map[string]interface{}) (int64, error) {
timestamp := time.Now().Unix()
rows := make([]map[string]interface{}, 0)
region_id_arr := []string{}
for _, v := range data {
region_id_arr = append(region_id_arr, helper.ToStr(v["regionId"]))
rows = append(rows, map[string]interface{}{
"region_id": v["regionId"],
"name": v["regionName"],
"createtime": timestamp,
"updatetime": timestamp,
"is_delete": 0,
"deletetime": 0,
})
}
where := "1=1"
if len(region_id_arr) > 0 {
where = "region_id not in('" + strings.Join(region_id_arr, "','") + "')"
}
_, err := new(Query).Db(dbname).Clean().Table("ttl_project").
Data("is_delete=?").Value(1).
Data("deletetime=?").Value(timestamp).
Where(where).
Update()
if err != nil {
log.Println("update project err", err)
}
if len(rows) > 0 {
_, err := new(Query).Db(dbname).Clean().Table("ttl_project").
SaveDatas(rows).
UpdFields([]string{"updatetime", "is_delete", "deletetime", "name"}).
MergeIntoWhereField([]string{"region_id"}).
UpdateAll()
if err != nil {
log.Println("insert to project err", err)
}
} else {
log.Println("rows is null", rows)
}
return 0, nil
}
func Test_ChainM(t *testing.T) {
err := DmConnect("192.168.233.155", "WUYE", "Bin123456", "", "5236")
if err != nil {
t.Log(err)
}
db_name := ""
var apiResp map[string]interface{}
test_json := `{"code":0,"message":"success","data":[{"regionId":"1","regionName":"项目 1"},{"regionId":"2","regionName":"项目 2"}]}`
err = json.Unmarshal([]byte(test_json), &apiResp)
if err != nil {
log.Println("------Get region queryType json Unmarshal err", err.Error())
return
}
if _, exist := apiResp["code"]; exist {
if helper.ToInt(apiResp["code"]) == 0 {
if _, exist = apiResp["data"]; exist {
data, err := helper.InterfaceToMapInterfaceArr(apiResp["data"])
if err != nil {
log.Println("数据转换失败,", err.Error())
} else {
if len(data) > 0 {
log.Println("data", data)
CreateData(db_name, data)
}
}
} else {
log.Println("请求无数据返回")
}
} else {
log.Println("请求异常message:", apiResp["message"])
}
} else {
log.Println("code is not exist", apiResp)
}
}
// 测试各数据库下各种情况
func Test_Chain(t *testing.T) {
//测试数据库连接
//err := Connect("127.0.0.1", "root", "root", "canyin", "3306")
//err := PgConnect("192.168.233.157", "bin", "Bin123456", "canyin", "5432")
//err := DmConnect("192.168.233.148", "SHOPV2", "Bin123456", "", "5236")
err := DmConnect("10.33.0.91", "ZYSG", "Zysg!#2025", "", "5236")
if err != nil {
t.Log(err)
}
db_name := ""
table_name := "ttl_user_log"
//time := time.Now().Unix()
//================查询表结构===========
ret, err := new(Query).Db(db_name).GetTableInfo(table_name)
if err != nil {
t.Log(err)
}
fmt.Println("===GetTableInfo:", ret)
//==========获取信息=================
/*query := new(Query).Db(db_name).Clean().Table("ttl_dorm_goods_reserve").Alias("a").
Join([]string{"ttl_dorm_goods_reserve_detail b", "a.id=b.reserve_id", "left"}).
Join([]string{"ttl_dorm_goods c", "c.id=b.goods_id", "left"}).
Join([]string{"ttl_dorm_room d", "d.id=a.room_id", "left"}).
Join([]string{"dorm_room_item e", "e.id=a.room_item_id", "left"}).
Where("a.user_id =?").Value(6006)
info, err := query.Groupby("a.id").Title("a.id").BuildSelectSql()*/
//info, err := new(Query).Db(db_name).Clean().Table(table_name).Clean().Alias("user").Join([]string{"ttl_user u", "u.id = user.user_id", "inner"}).Where("user.id=?").Value("3").Title("user.id,user.user_id,u.nickname").Find()
//info, err := GetDataByStmt(db_name, table_name, "*", []string{"id = ?"}, []interface{}{3}, nil)
/*if err != nil {
t.Log(err)
}
fmt.Println("===Find:", info)*/
//============获取列表==================
list, err := new(Query).Db("").Table("ttl_area").
Title("`first`,id,level,mergename,name,pid,shortname").
Select()
if err != nil {
t.Log(err)
}
fmt.Println("===List:", list)
//===========添加数据============
//insert_res, err := new(Query).Db(db_name).Clean().Table(table_name).Data("user_id=?").Value("1").Data("createtime=?").Value(time).Create()
//insert_res, err := InsertByStmt(db_name, table_name, []string{"user_id=?", "createtime=?"}, []interface{}{"1", time})
//insert_res, err := Insert(db_name, table_name, map[string]string{"user_id": "1", "createtime": helper.ToStr(time)})
//if err != nil {
// t.Log(err)
//}
//fmt.Println("===Insert:", insert_res)
//================更新数据=====================
//update_res, err := new(Query).Db(db_name).Clean().Table(table_name).Data("user_id=?").Value("2").Data("createtime=?").Value(time).Where("id=?").Value("6").Update()
//update_res, err := UpdateByStmt(db_name, table_name, []string{"createtime=?", "user_id=?"}, []string{"id=?"}, []interface{}{time, 3, 6})
//if err != nil {
// t.Log(err)
//}
//fmt.Println("===Update:", update_res)
//=============事务================
/*fmt.Println("================开启事务============")
tx, err := DB.Begin()
if err != nil {
t.Log(err)
}
update_log, err := TxPreUpdate(tx, db_name, table_name, []string{"createtime= ?"}, []string{"id=?"}, []interface{}{time, 2})
if err != nil {
tx.Rollback()
t.Log(err)
}
fmt.Println("===========事务执行:==================")
fmt.Println("===事务update:", update_log)
insert_log, err := TxPreInsert(tx, db_name, table_name, map[string]interface{}{"user_id": "1", "createtime": helper.ToStr(time)})
if err != nil {
tx.Rollback()
t.Log(err)
}
fmt.Println("===事务insert:", insert_log)
del_log, err := TxDelete(tx, db_name, table_name, map[string]string{"id": "2"})
if err != nil {
tx.Rollback()
t.Log(err)
}
fmt.Println("====事务delete:", del_log)
err = tx.Commit()
if err != nil {
t.Log(err)
tx.Rollback()
}
fmt.Println("=======事务执行完成==========")*/
/*trans := NewTxQuery().Db(db_name)
update_trans_res, err := trans.Clean().Table("ttl_dorm_check_in_apply").SaveData(map[string]interface{}{
"check_out_id": "48",
"id": "21",
"updatetime": time.Now().Unix(),
}).UpdateAll()
if err != nil {
trans.Rollback()
t.Log(err)
}
fmt.Println("=======事务update_trans", update_trans_res)
err = trans.Commit()
if err != nil {
trans.Rollback()
t.Log(err)
}*/
/*fmt.Println("====================执行事务trans============")
trans := NewTxQuery().Db(db_name)
info_trans, err := trans.Clean().Table(table_name).Where("id = ?").Value(5).Find()
if err != nil {
trans.Rollback()
t.Log(err)
}
fmt.Println("===事务Find_trans:", info_trans)
list_trans, err := trans.Clean().Table(table_name).Title("*").Select()
if err != nil {
trans.Rollback()
t.Log(err)
}
fmt.Println("=========事务List_trans:", list_trans)
data := map[string]interface{}{
"user_id": 5,
"memo": "test",
"createtime": time,
}
add_trans, err := trans.Clean().Table(table_name).SaveData(data).CreateAll()
if err != nil {
trans.Rollback()
t.Log(err)
}
fmt.Println("======事务Add_trans:", add_trans)
data["id"] = 15
update_trans_res, err := trans.Clean().Table(table_name).SaveData(data).UpdateAll()
if err != nil {
trans.Rollback()
t.Log(err)
}
fmt.Println("=======事务update_trans", update_trans_res)
err = trans.Commit()
if err != nil {
trans.Rollback()
t.Log(err)
}
fmt.Println("====================执行事务结束==================")*/
}