用Go怎么得到mysql 表结构

https://stackoverflow.com/questions/41262973/how-to-get-description-of-mysql-table-in-golang

我按照这个网址操作,怎么都不成功。

或者beego怎么做的给个提示也行。因为bee api 就是这么做的。

已邀请:

xkey - go

赞同来自:

xorm里面有源码,之前读其源码并验证确实可以,其实就是mysql私有的几张表里的查询而已,也可以去参考mysql文档,使用mysql管理员权限去查这几张表即可

yangbt - https://github.com/ybtq 在健身房写代码的程序猿

赞同来自:

func ExportDatabaseTable() ([]string, error) {
    db_adapter := beego.AppConfig.String("db_adapter")
    db_database := beego.AppConfig.String("db_database")
    tables := make([]string, 0)

    o := orm.NewOrm()
    switch db_adapter {
    case "mysql":
        {
            var lists []orm.Params

            _, err := o.Raw(fmt.Sprintf("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '%s'", db_database)).Values(&lists)
            if err != nil {
                return tables, err
            }
            for _, table := range lists {
                var results []orm.Params

                _, err = o.Raw(fmt.Sprintf("show create table %s", table["TABLE_NAME"])).Values(&results)
                if err != nil {
                    return tables, err
                }
                tables = append(tables, results[0]["Create Table"].(string))
            }
            break
        }
    case "sqlite3":
        {
            var results []orm.Params
            _, err := o.Raw("SELECT sql FROM sqlite_master WHERE sql IS NOT NULL ORDER BY rootpage ASC").Values(&results)
            if err != nil {
                return tables, err
            }
            for _, item := range results {
                if sql, ok := item["sql"]; ok {
                    tables = append(tables, sql.(string))
                }
            }
            break
        }
    }
    return tables, nil
}

jinheking

赞同来自:

谢谢,看着beego这个方法比较好,我去实验一下是否成功。

明_

赞同来自:

请问你使用什么软件越狱的 ?

要回复问题请先登录注册