通过go mod使用GORM(Mac OS系统)

  • 因为已经通过go mod使用过一次Gin框架(具体可以查询上一篇博客),所以这一次使用GORM比较顺利,下面来描述一下具体步骤。

1.导入GORM包

在项目里输入如下代码:

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

通过go mod导入包,具体步骤不再描述。

2.连接数据库

gorm支持很多数据源包括PostgreSQL、MySQL等,这里连接的是MySQL,所以需要引用"github.com/jinzhu/gorm/dialects/mysql"驱动,通过上面声明,已经获取数据库的连接。输入如下代码:

db, err := gorm.Open("mysql",
		"root:789456123@/test?charset=utf8&parseTime=True&loc=Local")
	db.SingularTable(true)

	if
[admin]2025/06/10 - 15:39:43.334 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [2.176ms] [rows:-] SELECT DATABASE() [admin]2025/06/10 - 15:39:43.369 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [33.690ms] [rows:1] SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'domestic_playlet%' ORDER BY SCHEMA_NAME='domestic_playlet' DESC,SCHEMA_NAME limit 1 [admin]2025/06/10 - 15:39:43.374 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [5.236ms] [rows:-] SELECT count(*) FROM information_schema.tables WHERE table_schema = 'domestic_playlet' AND table_name = 'casbin_rule' AND table_type = 'BASE TABLE' [admin]2025/06/10 - 15:39:43.375 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [0.384ms] [rows:-] SELECT DATABASE() [admin]2025/06/10 - 15:39:43.377 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [1.381ms] [rows:1] SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'domestic_playlet%' ORDER BY SCHEMA_NAME='domestic_playlet' DESC,SCHEMA_NAME limit 1 [admin]2025/06/10 - 15:39:43.380 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [1.539ms] [rows:-] SELECT * FROM `casbin_rule` LIMIT 1 [admin]2025/06/10 - 15:39:43.384 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:381 [4.430ms] [rows:-] SELECT column_name, column_default, is_nullable = 'YES', data_type, character_maximum_length, column_type, column_key, extra, column_comment, numeric_precision, numeric_scale , datetime_precision FROM information_schema.columns WHERE table_schema = 'domestic_playlet' AND table_name = 'casbin_rule' ORDER BY ORDINAL_POSITION [admin]2025/06/10 - 15:39:43.387 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:387 [1.812ms] [rows:-] SELECT DATABASE() [admin]2025/06/10 - 15:39:43.389 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:387 [1.485ms] [rows:1] SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE 'domestic_playlet%' ORDER BY SCHEMA_NAME='domestic_playlet' DESC,SCHEMA_NAME limit 1 [admin]2025/06/10 - 15:39:43.390 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:387 [1.031ms] [rows:-] SELECT count(*) FROM information_schema.statistics WHERE table_schema = 'domestic_playlet' AND table_name = 'casbin_rule' AND index_name = 'idx_casbin_rule' [admin]2025/06/10 - 15:39:43.399 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:432 [8.461ms] [rows:412] SELECT * FROM `casbin_rule` ORDER BY ID [admin]2025/06/10 - 15:39:43.409 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/go/go1.18/pkg/mod/github.com/casbin/gorm-adapter/v3@v3.7.3/adapter.go:432 [8.083ms] [rows:412] SELECT * FROM `casbin_rule` ORDER BY ID [admin]2025/06/10 - 15:39:43.428 info /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/initialize/internal/logger.go:31 /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/api/v1/ad/ad_report.go:51 [2.406ms] [rows:1] SELECT * FROM `ad_config` WHERE `ad_config`.`deleted_at` IS NULL 2025/06/10 15:39:43 [Recovery] 2025/06/10 - 15:39:43 panic recovered: GET /adConfig/syncMiniAppletAd HTTP/1.1 Host: 127.0.0.1:9898 Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate, br, zstd Accept-Language: zh-CN,zh;q=0.9,or;q=0.8 Connection: close Cookie: Goland-fcff3ee8=ff15cecc-434f-4a2b-9f47-035aace0e2da Referer: http://localhost:9527/ Sec-Ch-Ua: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24" Sec-Ch-Ua-Mobile: ?0 Sec-Ch-Ua-Platform: "macOS" Sec-Fetch-Dest: empty Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 X-Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVVUlEIjoiZWNkYWFiNjQtMGRmYS00OTZiLWE5Y2UtNDhlMDMzMDUyMDFjIiwiSUQiOjEsIlVzZXJuYW1lIjoiYWRtaW4iLCJOaWNrTmFtZSI6Ik1yIOi2heeuoSIsIkF1dGhvcml0eUlkIjo4ODgsIkJ1ZmZlclRpbWUiOjg2NDAwLCJpc3MiOiJxbVBsdXMiLCJhdWQiOlsiR1ZBIl0sImV4cCI6MTc1MDEyOTUxOSwibmJmIjoxNzQ5NTI0NzE5fQ.UD6xJG_oMSiF6k_S8O11hpoyzh04zM58nTEtAkYQcY8 X-User-Id: 1 assignment to entry in nil map /Users/linguangzhang/go/go1.20/src/runtime/map_faststr.go:205 (0x10280b1ff) mapassign_faststr: panic(plainError("assignment to entry in nil map")) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/api/v1/ad/ad_report.go:54 (0x104869ccb) (*AdReportApi).SyncMiniAppletAd: mapData["data"] = data /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/operation.go:95 (0x104828813) OperationRecord.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/casbin_rbac.go:36 (0x10482aa93) CasbinHandler.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/jwt.go:77 (0x104829a17) JWTAuth.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/project/tiance/domestic-playlet-admin-api/middleware/cors.go:26 (0x10482a653) Cors.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/recovery.go:102 (0x103ffb397) CustomRecoveryWithWriter.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/logger.go:240 (0x103ff9fa3) LoggerWithConfig.func1: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/context.go:174 (0x103fea837) (*Context).Next: c.handlers[c.index](c) /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:620 (0x103ff7e83) (*Engine).handleHTTPRequest: c.Next() /Users/linguangzhang/go/go1.18/pkg/mod/github.com/gin-gonic/gin@v1.9.1/gin.go:576 (0x103ff7a3b) (*Engine).ServeHTTP: engine.handleHTTPRequest(c) /Users/linguangzhang/go/go1.20/src/net/http/server.go:2936 (0x102c51a7b) serverHandler.ServeHTTP: handler.ServeHTTP(rw, req) /Users/linguangzhang/go/go1.20/src/net/http/server.go:1995 (0x102c4c61b) (*conn).serve: serverHandler{c.server}.ServeHTTP(w, w.req) /Users/linguangzhang/go/go1.20/src/runtime/asm_arm64.s:1172 (0x10285ef73) goexit: MOVD R0, R0 // NOP [GIN] 2025/06/10 - 15:39:43 | 500 | 103.336958ms | 127.0.0.1 | GET "/adConfig/syncMiniAppletAd"
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值