美文网首页读书笔记GO
《go web 编程》第四章 访问数据库:使用 Beego or

《go web 编程》第四章 访问数据库:使用 Beego or

作者: bycall | 来源:发表于2022-09-27 17:36 被阅读0次

    beego orm 是一个 Go 进行 ORM 操作的库,它采用了 Go style 方式对数据库进行操作,实现了 struct 到数据表记录的映射。beego orm 是一个十分轻量级的 Go ORM 框架,开发这个库的本意降低复杂的 ORM 学习曲线,尽可能在 ORM 的运行效率和功能之间寻求一个平衡,beego orm 是目前开源的 Go ORM 框架中实现比较完整的一个库,而且运行效率相当不错,功能也基本能满足需求。

    beego orm 是支持 database/sql 标准接口的 ORM 库,所以理论上来说,只要数据库驱动支持 database/sql 接口就可以无缝的接入 beego orm。目前测试过的驱动包括下面几个:

    Mysql: github/go-mysql-driver/mysql

    PostgreSQL: github.com/lib/pq

    SQLite: github.com/mattn/go-sqlite3

    Mysql: github.com/ziutek/mymysql/godrv

    暂未支持数据库:

    MsSql: github.com/denisenkom/go-mssqldb

    MS ADODB: github.com/mattn/go-adodb

    Oracle: github.com/mattn/go-oci8

    ODBC: bitbucket.org/miquella/mgodbc

    安装

    beego orm 支持 go get 方式安装,是完全按照 Go Style 的方式来实现的。


    image.png

    如何初始化

    首先你需要 import 相应的数据库驱动包、database/sql 标准接口包以及 beego orm 包,如下所示:


    image.png

    PostgreSQL 配置:

    // _ "github.com/lib/pq"
    
    // 注册驱动
    orm.RegisterDriver("postgres", orm.DR_Postgres) 
    
    // 设置默认数据库
    // PostgresQL用户:postgres ,密码:zxxx , 数据库名称:test , 数据库别名:default
    orm.RegisterDataBase("default", "postgres", "user=postgres password=zxxx dbname=test host=127.0.0.1 port=5432 sslmode=disable")
    

    MySQL 配置:

    // _ "github.com/go-sql-driver/mysql"
    
    // 注册驱动
    orm.RegisterDriver("mysql", orm.DR_MySQL)
    
    // 设置默认数据库
    //mysql用户:root ,密码:zxxx , 数据库名称:test , 数据库别名:default
     orm.RegisterDataBase("default", "mysql", "root:zxxx@/test?charset=utf8")
    

    Sqlite 配置:

    // _ "github.com/mattn/go-sqlite3"
    
    // 注册驱动
    orm.RegisterDriver("sqlite", orm.DR_Sqlite)
    
    // 设置默认数据库
    // 数据库存放位置:./datas/test.db , 数据库别名:default
    orm.RegisterDataBase("default", "sqlite3", "./datas/test.db")
    

    导入必须的 package 之后,我们需要打开到数据库的链接,然后创建一个 beego orm 对象(以 MySQL 为例),如下所示
    beego orm:

    
    func main() {
        o := orm.NewOrm()
    }
    

    简单示例:

    
    package main
    
    import (
        "fmt"
        "github.com/astaxie/beego/orm"
        _ "github.com/go-sql-driver/mysql" // 导入数据库驱动
    )
    
    // Model Struct
    type User struct {
        Id   int
        Name string `orm:"size(100)"`
    }
    
    func init() {
        // 设置默认数据库
        orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30)
    
        // 注册定义的 model
        orm.RegisterModel(new(User))
    // RegisterModel 也可以同时注册多个 model
    // orm.RegisterModel(new(User), new(Profile), new(Post))
    
        // 创建 table
        orm.RunSyncdb("default", false, true)
    }
    
    func main() {
        o := orm.NewOrm()
    
        user := User{Name: "slene"}
    
        // 插入表
        id, err := o.Insert(&user)
        fmt.Printf("ID: %d, ERR: %v\n", id, err)
    
        // 更新表
        user.Name = "astaxie"
        num, err := o.Update(&user)
        fmt.Printf("NUM: %d, ERR: %v\n", num, err)
    
        // 读取 one
        u := User{Id: user.Id}
        err = o.Read(&u)
        fmt.Printf("ERR: %v\n", err)
    
        // 删除表
        num, err = o.Delete(&u)
        fmt.Printf("NUM: %d, ERR: %v\n", num, err)
    }
    

    相关文章

      网友评论

        本文标题:《go web 编程》第四章 访问数据库:使用 Beego or

        本文链接:https://www.haomeiwen.com/subject/ynzfartx.html