亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Go / GORM 在沒有預定義結構的情況下打印 SELECT 查詢輸出

如何使用 Go / GORM 在沒有預定義結構的情況下打印 SELECT 查詢輸出

Go
忽然笑 2023-01-03 16:02:17
我正在開發一個 API,使用Go它連接到 MySQL 數據庫以執行某些查詢。正在GORM用于數據庫操作。但是我堅持打印SELECT沒有列名的表的查詢輸出。我的用例是,我需要在多個表上運行查詢,而我不知道它們的列名和類型是什么。因此,我無法為所有可能添加的當前和未來表預定義結構。有沒有辦法在SELECT沒有預定義的情況下打印/保存查詢輸出struct?我嘗試使用空結構做一些事情,但它對我沒有幫助。PS:我是圍棋的初學者    type Testing struct{}    var test Testing    dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v", myds.DBuser, myds.DBpassword, myds.DBhost, myds.DBport, myds.DBname)    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})    if err != nil {        fmt.Println(err)    }    tx := db.Raw(query).Scan(&test)    if tx.Error != nil {        fmt.Println(tx.Error)    }    fmt.Println(test)
查看完整描述

2 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

您可以使用匿名結構


假設您有一個結構:


type User struct{

  FirstName string

  LastName string

}

查詢:


SELECT CONCAT(first_name,last_name) AS full_name from users;

注意新欄full_name


你可以簡單地做


var fullName = struct{FullName string}{}

請注意我如何使用 pascal 大小寫 & FullName 必須是字段名稱

中間的大寫字母將表示_

字段是公共的,因此可以在外部訪問。


full_name(查詢)= FullName(字段)


將此 fullName 對象作為存儲桶傳遞給您的掃描,它應該可以工作。


db.Raw(查詢).Scan(&全名)


編輯:


您的查詢會有一些結果嗎?

讓我假設你有


column_one,column_two... column_n

現在,要從所有列或選定的列中獲取數據,您只需定義具有特定名稱的字段(在匿名結構中)。在我們的例子中:


struct{ColumnOne,ColumnTwo,..ColumnN interface{}}{}

PS 我已經使用過interface{},您可以根據列返回的數據使用類型。


查看完整回答
反對 回復 2023-01-03
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

它通過使用帶有界面的地圖類型為我工作。這幫助我保存了SELECT沒有預定義結構或列名的查詢結果。


    dsn := fmt.Sprintf("%v:%v@tcp(%v:%v)/%v", myds.DBuser, myds.DBpassword, myds.DBhost, myds.DBport, myds.DBname)


    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

    if err != nil {

        fmt.Println(err)

    }


    var result []map[string]interface{}


    tx := db.Raw(query).Scan(&result)

    if tx.Error != nil {

        fmt.Println(tx.Error)

        return

    }

    bytes, _ := json.Marshal(result)

    fmt.Println(string(bytes))


查看完整回答
反對 回復 2023-01-03
  • 2 回答
  • 0 關注
  • 281 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號