golang gorm框架数据库的连接操作示例

golang gorm框架数据库的连接操作示例

目录

1. 连接数据库

1.1 MySQL

1.2 PostgreSQL

1.3 Sqlite3

1.4 不支持的数据库

2. 迁移

2.1. 自动迁移

2.2. 检查表是否存在

2.3. 创建表

2.4. 删除表

2.5. 修改列

2.6. 删除列

2.7. 添加外键

2.8. 索引

1. 连接数据库

要连接到数据库首先要导入驱动程序。例如

import _ "github.com/go-sql-driver/mysql"

为了方便记住导入路径,GORM包装了一些驱动。

import _ "github.com/jinzhu/gorm/dialects/mysql" // import _ "github.com/jinzhu/gorm/dialects/postgres" // import _ "github.com/jinzhu/gorm/dialects/sqlite" // import _ "github.com/jinzhu/gorm/dialects/mssql" 1.1 MySQL

注:为了处理time.Time,您需要包括parseTime作为参数。 (更多支持的参数)

import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) func main() { db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local") defer db.Close() } 1.2 PostgreSQL import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/postgres" ) func main() { db, err := gorm.Open("postgres", "host=myhost user=gorm dbname=gorm sslmode=disable password=mypassword") defer db.Close() } 1.3 Sqlite3 import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/sqlite" ) func main() { db, err := gorm.Open("sqlite3", "/tmp/gorm.db") defer db.Close() } 1.4 不支持的数据库

GORM正式支持上述的数据库,如果您使用的是不受支持的数据库请按照下面的连接编写对应数据库支持文件。 https://github.com/jinzhu/gorm/blob/master/dialect.go

2. 迁移 2.1. 自动迁移

自动迁移模式将保持更新到最新。

警告:自动迁移仅仅会创建表,缺少列和索引,并且不会改变现有列的类型或删除未使用的列以保护数据。

db.AutoMigrate(&User{}) db.AutoMigrate(&User{}, &Product{}, &Order{}) // 创建表时添加表后缀 db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&User{}) 2.2. 检查表是否存在 // 检查模型`User`表是否存在 db.HasTable(&User{}) // 检查表`users`是否存在 db.HasTable("users") 2.3. 创建表 // 为模型`User`创建表 db.CreateTable(&User{}) // 创建表`users'时将“ENGINE = InnoDB”附加到SQL语句 db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&User{}) 2.4. 删除表 // 删除模型`User`的表 db.DropTable(&User{}) // 删除表`users` db.DropTable("users") // 删除模型`User`的表和表`products` db.DropTableIfExists(&User{}, "products") 2.5. 修改列

修改列的类型为给定值

// 修改模型`User`的description列的数据类型为`text` db.Model(&User{}).ModifyColumn("description", "text") 2.6. 删除列 // 删除模型`User`的description列 db.Model(&User{}).DropColumn("description") 2.7. 添加外键 // 添加主键 // 1st param : 外键字段 // 2nd param : 外键表(字段) // 3rd param : ONDELETE // 4th param : ONUPDATE db.Model(&User{}).AddForeignKey("city_id", "cities(id)", "RESTRICT", "RESTRICT") 2.8. 索引 // 为`name`列添加索引`idx_user_name` db.Model(&User{}).AddIndex("idx_user_name", "name") // 为`name`, `age`列添加索引`idx_user_name_age` db.Model(&User{}).AddIndex("idx_user_name_age", "name", "age") // 添加唯一索引 db.Model(&User{}).AddUniqueIndex("idx_user_name", "name") // 为多列添加唯一索引 db.Model(&User{}).AddUniqueIndex("idx_user_name_age", "name", "age") // 删除索引 db.Model(&User{}).RemoveIndex("idx_user_name")

以上就是golang gorm框架数据库操作示例的详细内容,更多关于golang gorm框架数据库操作的资料请关注易知道(ezd.cc)其它相关文章!

推荐阅读

    苹果电脑如何连接和使用扫描仪

    苹果电脑如何连接和使用扫描仪,,扫描仪的使用 用苹果扫描图像。 连接扫描仪:在打开苹果电脑之前,你需要连接扫描仪和安装扫描仪驱动程序。扫

    1394连接是什么1394网络适配器知识

    1394连接是什么1394网络适配器知识,,今天有网友在QQ群中问了这样一个问题:1394连接是什么?。由于笔者对1394连接不清楚,通过百度搜索与谷歌

    针灸科设置|针灸科常见操作

    针灸科设置|针灸科常见操作,,1. 针灸科常见操作⒈临床实践技能(临床实际本领)考核 ⑴基本操作:①中医四诊、针灸、推拿、拔罐等中医临床技术;

    如何解决errtor加载操作系统的引导

    如何解决errtor加载操作系统的引导,,电脑启动后,屏幕上出现了errtor加载操作system错误提示,无法继续启动进入系统。以下是diskedit软件解决

    萤石设置方法|萤石操作手册下载

    萤石设置方法|萤石操作手册下载,,1. 萤石操作手册下载寻找验证码方法:恢复萤石云的验证码,需要在浏览器输入摄像头的ip地址登陆到一下界面:此

    如何创建宽带连接(图形)

    如何创建宽带连接(图形),,很多时候,由于计算机的使用不当,计算机网络连接遭到破坏。此时,我们需要自己创建宽带连接。下面我们将教你如何创建宽

    通过备份记录获得数据库的增长

    通过备份记录获得数据库的增长,,通常你想知道数据库是否正在增长,以及它增长了多少,可能比较数据库中每个历史时期的大小。 但是我们怎样才