• Gorm(表的操作以及索引的操作)


    package main

    import (
    "fmt"
    _ "github.com/jinzhu/gorm/dialects/mysql"
    "github.com/jinzhu/gorm"
    "time"
    )

    var (
    //变量db 通过init直接初始化
    db *gorm.DB
    err error
    dbinfo string
    )

    const (
    //定义db的连接信息
    dbuser string = "root"
    dbpassword = "123456"
    dbip = "39.105.114.198"
    dbport = "3306"
    database = "users"
    )
    //定义user结构体
    type User struct {
    //gorm model 会有createtime updatetime deletetime 分别代表创建时间 更新时间 删除时间 这里的删除是软删除 就是当你删除数据之后可以修改这个deletetime来表示此数据已经删除 不会真的删除 如果硬删除也可以
    //主要是为了防止误操作删除 以及备份一段时间的数据
    //这里需要注意一开始有gorm model的话就有没有的话中途应该是无法加的
    //但是字段我们可以不断增加 这个字段添加之后 会根据你添加的字段在数据库的对应的表中添加字段 原数据不会消失
    //这个只具备添加不具备删除字段
    gorm.Model
    Name string
    Password string
    Birthday time.Time
    Tel string
    Addr string
    Desc string
    }

    //没有gormmodel 管理的话 我们需要自己通过字段来表明
    //type User struct {
    // Id int `gorm:"primary key ; auto increment"` // primary 表示主键 int的主键会自动增长 auto表示自增长
    // Name string `gorm:"type:varchar(30);unique;not null;default:' ' "`
    // Password string
    // Birthday time.Time
    // Tel string
    // Addr string
    // Desc string `gorm:"type:text;index:index_desc"`
    //}

    func init() {
    //拼接数据库连接信息
    dbinfo = fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",dbuser,dbpassword,dbip,dbport,database)
    //初始化db
    db,err = gorm.Open("mysql", dbinfo)
    if err != nil {
    fmt.Println("mysql打开失败",err)
    return
    }
    //创建表关联user结构体
    db.AutoMigrate(&User{})
    }
    //这个方法是在表的时候自定义表名

    func (u *User) TableName() string {
    return "test"
    }

    func main() {
    //判断表是否存在gorm会默认的在表后面加复数表示多个
    //所以虽然是user结构体但是表名是users
    fmt.Println(db.HasTable(&User{}))
    fmt.Println(db.HasTable("users"))
    //createtable可以帮助我们创建表 需要传入结构体属性
    //但是这个创建只是在开始的时候创建并没有办法中途帮助我们更新
    //更新的话还是需要用结构体绑定表来做
    //fmt.Println(db.CreateTable(&User{}))

    //删除表 可以用结构体也可以用表名
    //fmt.Println(db.DropTable(&User{}))
    //fmt.Println(db.DropTable("users"))

    //修改字段属性
    //首先获取结构体属性 并且使用ModifyColumn 为字段修改数据库表结构 的字段类型
    db.Model(&User{}).ModifyColumn("Birthday","date")
    //删除字段
    //db.Model(&User{}).DropColumn("Birthday")
    //添加索引
    db.Model(&User{}).AddIndex("idx_name","name")
    //添加联合索引
    db.Model(&User{}).AddIndex("idx_name_addr","name","addr")
    //删除索引
    db.Model(&User{}).RemoveIndex("idx_name")
    //设置唯一索引
    db.Model(&User{}).AddUniqueIndex("idx_name","name")
    db.Close()

    }

    原文链接:https://blog.csdn.net/weixin_45413603/article/details/106971358

  • 相关阅读:
    第九篇 python基础之函数,递归,内置函数
    第六篇:python基础之文件处理
    第五篇:python基础之字符编码
    第四篇:python基础之条件和循环
    第三篇:python基础之数据类型与变量
    第二篇:python基础之核心风格
    第一篇:初识Python
    作业
    作业3
    作业2
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/16277863.html
Copyright © 2020-2023  润新知