当前位置: 首页 > article >正文

Go语言与数据库操作:从连接到CRUD

Go语言(Golang)以其高效性和并发性广受欢迎,而与数据库的交互则是任何应用程序不可或缺的一部分。本文将介绍Go语言如何与数据库进行操作,包括连接、基本的增删改查(CRUD)操作,以及常用的数据库库。

一、Go语言的数据库操作库

在Go语言中,进行数据库操作通常有两种方式:

  1. database/sql:Go标准库提供的接口,可以与各种数据库(如MySQL、PostgreSQL、SQLite等)进行交互。
  2. ORM(对象关系映射)库:例如GORM,提供更高级的抽象层,简化数据库操作,使得开发者可以以更面向对象的方式进行数据处理。

1. database/sql

database/sql包是Go的标准库,提供了数据库操作的基本接口,支持常见的数据库驱动。使用database/sql进行数据库操作时,需要先导入相应的驱动包。

安装MySQL驱动:

go get -u github.com/go-sql-driver/mysql

示例代码:

package main

import (
	"database/sql"
	"fmt"
	"log"

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

func main() {
   
	// 数据库连接字符串
	dsn := "username:password@tcp(127.0.0.1:3306)/dbname"
	db, err := sql.Open("mysql", dsn)
	if err != nil {
   
		log.Fatal(err)
	}
	defer db.Close()

	// 测试数据库连接
	if err := db.Ping(); err != nil {
   
		log.Fatal(err)
	}

	fmt.Println("数据库连接成功!")
}

2. GORM

GORM是一个功能强大的ORM库,提供了一套完整的接口来操作数据库,支持自动迁移、关联、预加载等功能。使用GORM可以更方便地进行数据建模和操作。

安装GORM:

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

示例代码:

package main

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type User struct {
   
	ID   uint   `gorm:"primaryKey"`
	Name string `gorm:"size:255"`
	Age  uint
}

func main() {
   
	dsn := "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
   })
	if err != nil {
   
		panic("failed to connect to the database")
	}

	fmt.Println("数据库连接成功!")
}

二、基本的数据库操作

无论是使用database/sql还是GORM,常见的数据库操作大致相同。下面我们将介绍如何使用这两种方式实现基本的CRUD操作。

1. 使用 database/sql 进行CRUD操作

创建用户
func createUser

http://www.kler.cn/a/379899.html

相关文章:

  • RK3568开发板Openwrt文件系统构建
  • 通讯学徒学习日记
  • 【Java知识】java进阶-一个好用的java应用分析工具arthas
  • 阿里云服务器 篇十:自动定时备份CSDN博客内容
  • 【系统架构设计师】2023年真题论文: 论面向对象分析的应用与实现(包括解题思路和素材)
  • Postgresql源码(137)执行器参数传递与使用
  • 有哪些编辑器,怎样选择编辑器
  • 嵌入式硬件电子电路设计(三)电源电路之负电源
  • Oracle SQL Loader概念及用法
  • IOS 防截屏实现
  • 与IP网络规划相关的知识点
  • Linux之信号量
  • Mate70还没发布,就有经销商因提前拆封被罚款50万起?
  • linux驱动-认识输入子系统源码以及裁剪
  • 【c++篇】:深入剖析vector--模拟实现属于自己的c++动态数组
  • Python+Requests+PyTest+Excel+Allure 接口自动化测试实战!
  • 2024年科技特长生招生新趋势:多领域扩展与创新人才培养
  • 连续可穿戴式基于微型机器学习跌倒检测
  • Win系统通过命令行查看笔记本电池损耗/寿命/健康
  • 每天10个vue面试题(七)
  • 【Redis_Day3】Redis通用命令
  • VR 创业之路:从《I Expect You To Die》到未来展望
  • 深度学习:Yolo V4的改进
  • 【系统架构设计师】2023年真题论文: 论面向对象分析的应用与实现(包括解题思路和素材)
  • 传智杯 第六届-复赛-C
  • zxing生成、解析二维码,条形码