beego访问数据库

先用一下,程序的结构不好,以后再重构一下

package main

import (
    //"bufio" //缓存IO
    "fmt"
    "os"
    "strings"

    "github.com/astaxie/beego"
    "github.com/astaxie/beego/orm"
    _ "github.com/go-sql-driver/mysql"
)

func init() {

    // orm.RegisterDataBase("default", "mysql", "root:root@tcp(192.168.224.128:3306)/cloudta?charset=utf8")

    dbhost := beego.AppConfig.String("dbhost")
    dbport := beego.AppConfig.String("dbport")
    dbuser := beego.AppConfig.String("dbuser")
    dbpassword := beego.AppConfig.String("dbpassword")
    db := beego.AppConfig.String("db")

    //注册mysql Driver
    orm.RegisterDriver("mysql", orm.DR_MySQL)
    //构造conn连接
    conn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + db + "?charset=utf8"
    //注册数据库连接
    orm.RegisterDataBase("default", "mysql", conn)

    fmt.Printf("数据库连接成功!%s\n", conn)

}

type Cloumns struct {
    Column_name string
}
type Tablenames struct {
    Table_name string
}

func main() {
    var err error
    var cloumn []Cloumns
    var tablename []Tablenames
    var querysql string

    db := beego.AppConfig.String("db")
    intablename := beego.AppConfig.String("tablename")
    if intablename == "*" {
        querysql = "select table_name from information_schema.tables where table_schema= " + "'" + db + "'"
    } else {
        querysql = "select table_name from information_schema.tables where table_schema= " + "'" + db + "'" + " and table_name = " + "'" + intablename + "'"

    }

    o := orm.NewOrm()

    f, err := os.Create("./inserttable.sql")
    if err != nil {
        fmt.Println("open file error!!")
    }
    defer f.Close()

    //get tablename from database
    _, errs := o.Raw(querysql).QueryRows(&tablename)
    if errs != nil {
        fmt.Printf("errors: %s\n", errs)
    }

    for _, v := range tablename {

        //get each column from every table
        _, err := o.Raw(" select lower(column_name)  column_name from information_schema.COLUMNS where table_name = ? ", v.Table_name).QueryRows(&cloumn)
        if err != nil {
            fmt.Printf("errors: %s\n", err)
        }

        atcloumn := make([]string, len(cloumn))
        vfield := make([]string, len(cloumn))

        for i, v := range cloumn {

            atcloumn[i] = "@" + v.Column_name
            vfield[i] = v.Column_name + " = " + atcloumn[i]
        }
        head := "-- 创建" + "[" + v.Table_name + "]" + " ..... " + "\n"
        slog := "[日志记录][CNST_LOG_DEBUG]" + "[\"" + v.Table_name + "表增加\"]" + "[" + strings.Join(atcloumn, ",") + "]" + "\n"
        inserttable := "[插入表记录][" + v.Table_name + "][" + strings.Join(vfield, ",\n") + "]" + "\n"
        serr := "[插入报错返回][ERR_ADD_RECORD_FAIL][增加流程监控记录表(" + v.Table_name + "失败][@error_id,@error_sysinfo]" + "\n\n"

        f.WriteString(head + slog + inserttable + serr)

    }
    f.Close()
}

conf下的app.conf的配置内容
dbhost =”192.168.224.128”
dbport = “3306”
dbuser =”root”
dbpassword = “root”
db =”cloudta”
/* 如果要 查找所有表,则改成 tablename = “*” */
tablename = “ta_tfundinfo”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值