Go语言实现操作MySQL的基础知识总结

目录
  • 前言
  • 下载依赖
  • 使用 MySQL 驱动
    • SetMaxOpenConns
    • SetMaxIdleConns
  • 操作

前言

MySQL 是目前开发中最常见的关系型数据库,也是程序员打交道最多的数据库。 使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql-driver/mysql来实现。这篇文章主要总结一下怎么使用Go语言操作MySql数据库,需要的朋友可以参考以下内容,希望对大家有帮助。

下载依赖

database/sql是Go操作数据库的标准库之一,它提供了一系列接口方法,用于访问数据库(mysql,sqllite,oralce),但是它并不会提供数据库特有的方法,那些特有的方法需要交给数据库驱动去处理。

我们在通常工作中,用的更多的是jmoiron/sqlx包来操作数据库,sqlx是基于标准库的扩展,并且我们可以通过sqlx操作各种类型的数据。

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

使用 MySQL 驱动

Open 打开一个 dirverName 指定的数据库,dataSourceName 指定数据源,一般至少包括数据库文件名和其它连接必要的信息。

func Open(driverName, dataSourceName string) (*DB, error)

它返回的是一个sql.DB数据库类型,它不是数据库连接,Go 中的连接来自内部实现的连接池,连接的建立是惰性的,连接将会在操作的时候,由连接池创建并维护,它可以安全地被多个goroutine同时使用。

示例:

package main

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

var db *sql.DB //声明一个全局的 db 变量

func main() {
	// 初始化 MySQL
	err := initDB()
	if err != nil {
		panic(err)
	}
	defer db.Close() // 注意这行代码要写在上面err判断的下面
}

//initDB 初始化MySQL
func initDB() (err error) {
    // 不会校验账号密码是否正确
	db, err = sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test")
	if err != nil {
		return err
	}
    // 尝试与数据库建立连接(校验dsn是否正确)
	err = db.Ping()
	if err != nil {
		return err
	}
	return nil
}

注意:

  • sql.Open只会验证格式是否正确,不会连接数据库。
  • db.Ping会连接数据库,判断用户,密码,ip地址,端口是否正确。
  • db.Closeerr之后,是因为可能打开不成功,关闭一个没有打开的连接。

SetMaxOpenConns

func (db *DB) SetMaxOpenConns(n int)

SetMaxOpenConns设置与数据库建立连接的最大数目。 如果n大于0且小于最大闲置连接数,会将最大闲置连接数减小到匹配最大开启连接数的限制。 如果n<=0,不会限制最大开启连接数,默认为0(无限制)。

SetMaxIdleConns

func (db *DB) SetMaxIdleConns(n int)

SetMaxIdleConns设置连接池中的最大闲置连接数。 如果n大于最大开启连接数,则新的最大闲置连接数会减小到匹配最大开启连接数的限制。 如果n<=0,不会保留闲置连接。

操作

func (db *DB) Query(query string, args ...interface{}) (*Rows, error)
func (db *DB) QueryRow(query string, args ...interface{}) *Row
func (db *DB) Exec(query string, args ...interface{}) (Result, error)
func (db *DB) Prepare(query string) (*Stmt, error)

db.Query(): 返回多行数据,需要依次遍历,并且需要自己关闭查询结果集。

db.QueryRow() :专门查询一行数据语法,返回ErrNoRow或者一行数据,不需要自己关闭结果集。

db.Exec() :用于执行insertupdatedelete等不需要返回结果集的操作。

db.Prepare() :预先将一个数据库连接(con)和一个条sql语句绑定并返回stmt结构体代表这个绑定后的连接,然后运行stmt.Query()或者stmt.QueryRow()stmt是并发安全的。之所以这样设计,是因为每次直接调用db.Prepare都会自动选择一个可用的con,每次选择的可能不是同一个con

到此这篇关于Go语言实现操作MySQL的基础知识总结的文章就介绍到这了,更多相关Go语言操作MySQL内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • golang 通过ssh代理连接mysql的操作

    我就废话不多说了,大家还是直接看代码吧~ package main import ( "bytes" "context" "database/sql" "errors" "fmt" "github.com/go-sql-driver/mysql" "golang.org/x/crypto/ssh" "io" "io/ioutil"

  • Golang操作MySql数据库的完整步骤记录

    前言 MySQL是业界常用的关系型数据库,在平时开发中会经常与MySql数据库打交道,所以在接下来将介绍怎么使用Go语言操作MySql数据库. 下载MySql连接驱动 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动.使用database/sql包时必须注入(至少)一个数据库驱动. 我们常用的数据库基本上都有完整的第三方实现.比如:MySQL驱动 **下载依赖** go get -u github.com/go-sql-driver/my

  • go第三方库sqlx操作MySQL及ORM原理

    目录 sqlx实战 准备工作 编写代码 添加引用 创建连接 增删改查 预处理语句 数据库事务 sqlx干了什么 MustXXX NamedXXX XXXScan sqlx是Golang中的一个知名三方库,其为Go标准库database/sql提供了一组扩展支持.使用它可以方便的在数据行与Golang的结构体.映射和切片之间进行转换,从这个角度可以说它是一个ORM框架:它还封装了一系列地常用SQL操作方法,让我们用起来更爽. sqlx实战 这里以操作MySQL的增删改查为例. 准备工作 先要准备一

  • Go 使用xorm操作mysql详情

    目录 xorm 安装 生成数据结构 struct 使用 xorm xorm 官方介绍:xorm 是一个简单而强大的 Go 语言 ORM 库. 通过它可以使数据库操作非常简便. xorm 的目标并不是让你完全不去学习 SQL,我们认为 SQL 并不会为 ORM 所替代,但是 ORM 将可以解决绝大部分的简单 SQL 需求. xorm 支持两种风格的混用. xorm 还提供了工具,通过 reverse 命令根据数据库的表结构生成对应的 struct,省去了人工组织代码的工作,十分方便.官方地址:ht

  • Golang中如何对MySQL进行操作详解

    前言 Golang官方并没有提供数据库驱动,但通过database/sql/driver包来提供了实现驱动的标准接口.可以在Github上找到很多开源的驱动. 其中go-sql-driver/mysql是一个比较推荐的驱动,其完全支持database/sql接口. 使用这个驱动, 在项目里import进: import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 在正式使用database/sql包之前

  • golang操作连接数据库实现mysql事务示例

    目录 mysql驱动 posgre驱动 连接postgres 连接mysql 初始化连接 SetMaxOpenConns SetMaxIdleConns CRUD 查询 单行查询QueryRow 多行查询Query-rows 插入和更新和删除Exec 影响的行数 插入 更新 删除 MySQL预处理 为什么要预处理? Go实现MySQL预处理 SQL注入问题 Go实现MySQL事务 什么是事务? 事务的ACID 事务相关方法 事务示例 MySQL是业界常用的关系型数据库,本文介绍了database

  • Go语言实现操作MySQL的基础知识总结

    目录 前言 下载依赖 使用 MySQL 驱动 SetMaxOpenConns SetMaxIdleConns 操作 前言 MySQL 是目前开发中最常见的关系型数据库,也是程序员打交道最多的数据库. 使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql-driver/mysql来实现.这篇文章主要总结一下怎么使用Go语言操作MySql数据库,需要的朋友可以参考以下内容,希望对大家有帮助. 下载依赖 database/sql是Go操作数据库的标准库之一,它提

  • PDO操作MySQL的基础教程(推荐)

    PHP中的PDO扩展为PHP访问数据库定义了一个轻量级的.一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据. PDO支持的PHP版本为PHP5.1以及更高的版本,而且在PHP5.2下PDO默认为开启状态. 下面是在php.ini中PDO的配置: extension=php_pdo.dll 为了启用对某个数据库的支持,需要在php配置文件中将相应的扩展打开,例如要支持MySQL,需要开启下面的扩展 extension=php_pdo_mys

  • R语言实现操作MySQL数据库

    用R语言做数据分析时,常常需要从多种数据源取数据,其中数据库是非常常见的数据源.用R操作MySQL数据库,可以说是数据分析师必备的技能了,本文介绍RMySQL包,可以在R语言中对数据库进行增删改查的操作. 软件版本 win10 64bit r3.6.1 rstudio 1.2 RMySQL 0.10.20 安装包 install.packages('RMySQL') 创建连接 用dbConnect函数创建连接,驱动类型设置为MySQL(),用户名user.密码password.主机host.端口

  • Python的SQLalchemy模块连接与操作MySQL的基础示例

    一.SQLalchemy简介 SQLAlchemy是一个开源的SQL工具包,基本Python编程语言的MIT许可证而发布的对象关系映射器.SQLAlchemy提供了"一个熟知的企业级全套持久性模式,使用ORM等独立SQLAlchemy的一个优势在于其允许开发人员首先考虑数据模型,并能决定稍后可视化数据的方式. 二.SQLAlchempy的安装 首先需安装mysql,这里就不再多说了..... 然后,下载SQLAlchemy(http://www.sqlalchemy.org/download.h

  • PHP连接和操作MySQL数据库基础教程

    从这里开始 我的博客,后台数据库是什么?没错,就是MySQL,服务器端使用的脚本就是PHP,整个框架使用的是WordPress.PHP和MySQL就像夫妻一样,总是在一起干活.现在这里,就集合PHP,总结一下MySQL的实际使用,也算作是MySQL开发的入门.关于PHP与MySQL的合作,不外乎以下三种方法: 1.mysql扩展:但是目前已经不推荐使用: 2.mysqli扩展:同时提供面向对象风格和面向过程的风格:要求MySQL版本是4.1及以上的: 3.PDO扩展为PHP访问数据库定义了一种轻

  • PHP5 操作MySQL数据库基础代码

    1. 建立数据库连接 复制代码 代码如下: <?php $mysqli = new mysqli("localhost","root","","mydb"); ?> 建立一个数据库连接需要四个参数,分别为数据库地址.数据库访问用户名.数据库访问密码.数据库名称.除了使用上面的mysqli对象的构造方法建立数据库连接外,还可以调用其connect方法建立数据库的连接. 复制代码 代码如下: <?php $mys

  • Python操作MySQL模拟银行转账

    今天在慕课网上学习了有关于python操作MySQL的相关知识,在此做些总结.python操作数据库还是相对比较简单的,由于python统一了各个数据库的接口程序,也就是所谓的Python DB,所以无论使用何种数据可,都可以用统一的接口对数据库进行操作.操作中主要涉及connection对象的操作和cursor的操作,前者主要是为了建立起python与数据库的数据交换通道,后者则是访问数据的游标,也可以理解为指针.数据库的相关结构化语言在Python中均是以字符串的形式呈现的.另外注意roll

  • Go语言操作MySQL的知识总结

    目录 一.连接 1.1 下载依赖 1.2 使用MySQL驱动 1.3 初始化连接 1.4 SetMaxOpenConns 1.5 SetMaxIdleConns 二.CRUD 2.1 建库建表 2.2 查询 2.3 单行查询 2.4 多行查询 2.5 插入数据 2.6 更新数据 2.7 删除数据 三.事务 3.1 什么是事务 3.2 事务的ACID 3.3 事务相关方法 3.4 事务示例 一.连接 Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数

  • python 专题九 Mysql数据库编程基础知识

    在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Python构建网页的,所以这篇文章主要讲述Python调用MySQL数据库相关编程知识.从以下几个方面进行讲解: 1.配置MySLQ 2.SQL语句基础知识 3.Python操作MySQL基础知识 4.Python调用MySQL示例 一. 配置MySQL 首先下载mysql-5.0.96-winx64,安装

  • 快速学习MySQL基础知识

    这篇文章主要梳理了 SQL 的基础用法,会涉及到以下方面内容: SQL大小写的规范 数据库的类型以及适用场景 SELECT 的执行过程 WHERE 使用规范 MySQL 中常见函数 子查询分类 如何选择合适的 EXISTS 和 IN 子查询 了解 SQL SQL 是我们用来最长和数据打交道的方式之一,如果按照功能划分可分为如下 4 个部分: DDL,数据定义语言.定义数据库对象,数据表,数据列.也就是,对数据库和表结构进行增删改操作. DML,数据操作语言.对数据表的增删改. DCL,数据控制语

随机推荐