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

go 连接操作MySQL

连接Mysql

  1. 访问此网站搜索MySQL
  2. 第一个就是按照指引运行
go get -u github.com\go-sql-driver\mysql
  1. 导入包建立连接
package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}// ...func main() {err := initdb()if err != nil {panic(err)}}

插入数据

func(db *DB) Exec(query string,args...interface{})(Result,error)package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}func insertValue(name string, password string) (result sql.Result, err error) {query := "insert into user_tbl(name,password) values(?,?)"result, err = db.Exec(query, name, password)if err != nil {fmt.Printf("err: %v\n", err)}fmt.Printf("result: %v\n", result)// 最后插入的IDfmt.Println(result.LastInsertId())return
}// ...func main() {err := initdb()if err != nil {panic(err)}insertValue("ellis", "ellis")
}

查询

  • 单行查询使用QueryRow,详见selectOne函数
package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func searchOne() {var user Userdb.QueryRow("select * from user_tbl where id=1").Scan(&user.id, &user.name, &user.password)fmt.Printf("user.id: %v\n", user.id)
}// ...func main() {err := initdb()if err != nil {panic(err)}searchOne()
}
  • 查询多行
package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func searchAll() {query := "select * from user_tbl"r, err := db.Query(query)defer r.Close()if err != nil {fmt.Printf("err: %v\n", err)} else {// 一行行的读for r.Next() {var u Userr.Scan(&u.id, &u.name, &u.password)fmt.Printf("u: %v\n", u)}}
}// ...func main() {err := initdb()if err != nil {panic(err)}fmt.Printf("db: %v\n", db)searchAll()
}

更新

package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func update() {sql := "update user_tbl set name=? where id=?"r, err := db.Exec(sql, "vv", 1)if err != nil {fmt.Printf("err: %v\n", err)} else {//打印影响行数fmt.Println(r.RowsAffected())}
}func main() {err := initdb()if err != nil {panic(err)}update()
}

删除

package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql"
)var db *sql.DBfunc initdb() (err error) {db, err = sql.Open("mysql", "ellis:ellis@tcp(192.168.214.134:3306)/go_db?charset=utf8mb4&parseTime=True")if err != nil {return err}//尝试与数据库建立连接err = db.Ping()if err != nil {return err}// See "Important settings" section.db.SetConnMaxLifetime(time.Minute * 3)db.SetMaxOpenConns(10)//最大空闲db.SetMaxIdleConns(10)return nil
}type User struct {id       intname     stringpassword string
}func delete() {sql := "delete from user_tbl where id=?"r, err := db.Exec(sql, 1)if err != nil {fmt.Printf("err: %v\n", err)} else {//打印影响行数fmt.Println(r.RowsAffected())}
}func main() {err := initdb()if err != nil {panic(err)}delete()
}

相关文章:

go 连接操作MySQL

连接Mysql 访问此网站搜索MySQL第一个就是按照指引运行 go get -u github.com\go-sql-driver\mysql导入包建立连接 package mainimport ("database/sql""fmt""time"_ "github.com/go-sql-driver/mysql" )var db *sql.DBfunc initdb…...

git常见的命令,问题和处理方式

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方…...

Ubuntu环境下超好用的文件对比工具软件meld

Ubuntu环境下超好用的文件对比工具软件_ubuntu 代码比较工具_Calculation K的博客-CSDN博客...

Channel是什么?FileChannel类的常用方法

Channel 是一个接口对象,它类似于传统的流对象,但与传统的流对象又有些不同,具体表现如下: • Channel可以异步地执行I/O读写操作。 • Channel的读写操作是双向的,既可以从 Channel中读取数据,又可以写数据到Channel,而流的读写操作通常都是单向的。 • Channel…...

Python爬虫——scrapy_读书网数据入库和链接跟进

数据入库 先创建一个数据库 create table book(id int primary key auto_increment,name varchar(128),src varchar(128));settings.py DB_HOST 169.254.38.183 # 端口号是一个整数 DB_PORT 3306 DB_USER root DB_PASSWORD 123456 # 数据库名称 DB_NAME spider01 DB_CHA…...

前端常用linux命令

前端开发也需要掌握一些常用的linux命令,以便在linux系统上做一些操作如nginx代理配置,项目解压发布等 1、cd 切换目录 cd / //切换到根目录 cd directory_path //切换到directory_path目录 cd ../ //切换到上一级目录2、ls 列出目录内容 ls3…...

制作高质量SVG的最佳工具,这些编辑软件你需要知道!

作为前端开发者,想要学习更高级的可视化技术,SVG 编辑工具是必学的。与其他图像格式相比,SVG 图像可任意缩放而不损失质量,还可以实现交互动画效果,一个好的 SVG 编辑器能大大简化你的学习过程。下面就跟随小编一起看看…...

四、MySQL性能优化

1、SQL性能优化 1、如何分析SQL的性能? 我们可以使用EXPLAIN命令来分析SQL的执行计划 ,执行计划是指一条SQL语句在经过MySQL查询优化器的选择后具体的执行方式 EXPLAIN并不会真的去执行相关的语句,而是通过查询优化器 对语句进行分析&…...

Oracle Database12c数据库官网下载和安装教程

文章目录 下载安装Oracle自带的客户端工具使用 下载 进入oracle官网 点击下载连接之后右上角会有一个下载 我们只需要数据库本体就够了 运行这个下载器 等待下好之后即可 出现 Complete 之后代表下载成功,然后我们解压即可 安装 双击 双击setup.exe 根据…...

spring依赖注入详解(下)

Autowired注解依赖注入过程 一、findAutowireCandidates()实现 找出BeanFactory中类型为type的所有的Bean的名字,注意是名字,而不是Bean对象,因为我们可以根据BeanDefinition就能判断和当前type是不是匹配,不用生成Bean对象把re…...

python的dataframe常用处理方法

import pandas as pdclass DataFrameProcessor:staticmethoddef sort_by_column(df, by_column, ascendingTrue):"""根据指定列对DataFrame进行排序。Parameters:df (pd.DataFrame): 要排序的DataFrame。by_column (str): 要排序的列名。ascending (bool): True…...

k8s 自身原理之高可用

说到高可用,咱们在使用主机环境的时候(非 k8s),咱做高可用有使用过这样的方式: 服务器做主备部署,当主节点和备节点同时存活的时候,只有主节点对外提供服务,备节点就等着主节点挂了…...

游乐场vr设备虚拟游乐园vr项目沉浸体验馆

在景区建设一个VR游乐场项目可以为游客提供一种新颖、刺激和沉浸式的游乐体验。提高游客的体验类型,以及景区的类目,从而可以吸引更多的人来体验。 1、市场调研:在决定建设VR游乐场项目之前,需要进行市场调研,了解当地…...

window10安装并使用oracle

1、现在oracle19c或者21c,下载链接如下 Database Software Downloads | Oracle 中国 2、安装好之后, 2.1PL/SQL连接方式 命令窗口输入sqlplus conn as sysdba 2.2DBeaver连接 输入IP、 端口默认1521 数据库默认是ORCL 用户名是system 角色是N…...

[Mac软件]AutoCAD 2024 for Mac(cad2024) v2024.3.61.182中文版支持M1/M2/intel

下载地址:前往黑果魏叔官网 AutoCAD是一款计算机辅助设计(CAD)软件,目前已经成为全球最受欢迎的CAD软件之一。它可以在二维和三维空间中创建精确的技术绘图,并且可以应用于各种行业,如建筑、土木工程、机械…...

Oracle 主从库目录不一致(异路径)的n种处理方案及效果

最近遇到了复制数据(DUPLICATE TARGET DATABASE TO xxx)的时候 Oracle 源和目标库目录不一致的问题,比较初级但也踩到一些坑,整理记录一下。主从库搭建的时候注意事项其实也类似,而且更通用,所以标题写的是…...

创建型(一) - 简单工厂模式、工厂方法模式和抽象工厂模式

本文使用了王争老师设计模式课程中的例子,写的很清晰,而且中间穿插了代码优化。 由于设计模式就是解决问题的一种思路,所以每个设计模式会从问题出发,这样比较好理解设计模式出现的意义。 一、简单工厂模式 解决问题&#xff1a…...

LeetCode3.无重复字符的最长子串

虽然是一道中等题,但我5分钟就写完了,而且是看完题就知道怎么写,这一看就知道双指针,一个左一个右,右指针往后移如果没有重复的长度1;如果有重复的,左指针往右移,那如何判断重复呢&a…...

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏

鲁图中大许少辉博士八一新书《乡村振兴战略下传统村落文化旅游设计》山东省图书馆典藏...

如何发布自己的小程序

小程序的基础内容组件 text&#xff1a; 文本支持长按选中的效果 <text selectable>151535313511</text> rich-text: 把HTML字符串渲染为对应的UI <rich-text nodes"<h1 stylecolor:red;>123</h1>"></rich-text> 小程序的…...

工业缺陷检测实战:用‘非均衡’数据增强搞定样本不足与类别不平衡难题

工业缺陷检测实战&#xff1a;破解样本不足与类别失衡的数据增强策略 在半导体、汽车零部件等精密制造领域&#xff0c;一个肉眼难辨的微小缺陷可能导致整批产品报废。传统人工质检不仅效率低下&#xff0c;且漏检率常高达15%-30%。当我们尝试用深度学习构建缺陷检测系统时&…...

大语言模型微调实战:从LoRA到QLoRA,一站式开源框架详解

1. 项目概述与核心价值 如果你正在寻找一个能够一站式搞定主流大语言模型微调的开源项目&#xff0c;那么 ssbuild/llm_finetuning 绝对值得你花时间深入研究。这个项目本质上是一个基于 PyTorch 和 Hugging Face Transformers 生态的、高度工程化的微调框架。它最大的魅力在…...

Drogon框架数据库连接监控终极指南:性能指标与智能告警机制

Drogon框架数据库连接监控终极指南&#xff1a;性能指标与智能告警机制 【免费下载链接】drogon Drogon: A C14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows 项目地址: https://gitcode.com/gh_mirrors/dr/drogon Drogon是一个基于…...

构建本地AI记忆系统:五大记忆库与心跳回忆机制详解

1. 项目概述&#xff1a;一个让AI助手真正“记住你”的本地记忆系统 如果你用过OpenClaw、Claude Code或者任何AI助手&#xff0c;肯定遇到过这样的场景&#xff1a;昨天刚跟它详细讨论了一个项目方案&#xff0c;今天再问&#xff0c;它要么含糊其辞&#xff0c;要么又得从头解…...

Factool:大语言模型事实核查工具包的设计原理与工程实践

1. 项目概述&#xff1a;当AI学会“查证”&#xff0c;我们该如何信任它&#xff1f;最近在折腾大语言模型&#xff08;LLM&#xff09;应用落地的朋友&#xff0c;估计都绕不开一个头疼的问题&#xff1a;幻觉&#xff08;Hallucination&#xff09;。你让模型写一篇行业报告&…...

Python自动化交易:Kalshi预测市场API封装与量化策略实践

1. 项目概述&#xff1a;一个为Kalshi预测市场打造的自动化工具箱如果你对预测市场感兴趣&#xff0c;或者正在寻找一种程序化的方式来管理你在Kalshi平台上的交易活动&#xff0c;那么你可能会对这个名为kalshi-skill的项目产生共鸣。简单来说&#xff0c;这是一个基于Python的…...

Arm DDT:高性能计算并行程序调试利器

1. Arm DDT调试工具概述Arm DDT&#xff08;Distributed Debugging Tool&#xff09;是Arm公司开发的一款专业级并行程序调试工具&#xff0c;专为高性能计算&#xff08;HPC&#xff09;领域设计。作为Arm Forge工具套件的重要组成部分&#xff0c;DDT提供了强大的MPI程序调试…...

LeetCode 岛屿数量题解

LeetCode 岛屿数量题解 题目描述 给定一个二维网格地图 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;&#xff0c;计算岛屿的数量。 示例&#xff1a; 输入&#xff1a;grid [ ["1","1","1","1","0"], …...

工业 AI 赋能采购:智能供应商匹配重构招标流程

Q1&#xff1a;传统企业采购招标&#xff0c;供应商对接与筛选存在哪些固有痛点&#xff1f;传统工业企业采购招标模式高度依赖人工经验&#xff0c;存在三大核心痛点&#xff1a;供应商资源固化&#xff1a;每次招标都需从零手动联络供应商&#xff0c;仅依靠采购人员个人记忆…...

嵌入式系统开发实战:从架构设计到量产部署的工程指南

1. 从一场顶级技术盛会看嵌入式开发的演进与实战十多年前&#xff0c;也就是2010年的6月&#xff0c;芝加哥嵌入式系统大会&#xff08;ESC Chicago&#xff09;的第一天&#xff0c;被当时的媒体形容为“全明星阵容”的聚会。Dan Saks、Christian Legare、Bill Gatliff、David…...