用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这个方法比较好,我去实验一下是否成功。

明_

赞同来自:

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

要回复问题请先登录注册