在golang中要实现对数据库的操作, 一个比较好用的方式就是使用XORM,xorm是一个简单而强大的Go语言ORM库,通过它可以使数据库操作非常简便。 在xorm里面,可以同时存在多个ORM引擎,一个ORM引擎称为Engine,一个Engine一般只对应一个数据库。

golang的连接池配置

这里初始化一个全局的xorm.Engine对象, xorm.Engine通过调用xorm.NewEngine生成在很多其他的API都需要传入该对象作为参数。 这里需要理解这里设定的3个参数的意义:

SetMaxIdleConns()

设置连接池中的保持连接的最大连接数。默认也是0,表示连接池不会保持释放会连接池中的连接的连接状态:即当连接释放回到连接池的时候,连接将会被关闭。这会导致连接再连接池中频繁的关闭和创建。

SetMaxOpenConns()

设置打开数据库的最大连接数,包含正在使用的连接和连接池的连接。如果你的函数调用需要申请一个连接,并且连接池已经没有了连接或者连接数达到了最大连接数。此时的函数调用将会被block,直到有可用的连接才会返回。设置这个值可以避免并发太高导致连接mysql出现too many connections的错误。该函数的默认设置是0,表示无限制。

SetConnMaxLifetime

设置连接可以被使用的最长有效时间,如果过期,连接将被拒绝。

go xorm来操作mysql

很有用,来看下:

package main

import (

"fmt"

"github.com/go-xorm/xorm"

"github.com/go-xorm/core"

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

)

// 对应数据库的tablename必须为student

// 执行mysql时,对应的字段为xxx,yyy,zzz; 也可以省掉,默认的mysql字段为id,username,address

type Student struct {

Id int `xorm:"INT(11) 'xxx'"`

Username string `xorm:"VARCHAR(64) 'yyy'"`

Address string `xorm:"VARCHAR(256) 'zzz'"`

}

func main() {

engine, err := xorm.NewEngine("mysql", "root@/taoge?charset=utf8") // dbname是taoge

if err != nil{

fmt.Println(err)

return

}

// 如下Ping可以不要

// if err := engine.Ping(); err != nil{

// fmt.Println(err)

// return

// }

//engine.ShowSQL(true) // 显示SQL的执行, 便于调试分析

engine.SetTableMapper(core.SnakeMapper{})

st1 := new(Student)

st1.Username = "taoge"

st1.Address = "China"

affected, err := engine.Insert(st1)

fmt.Println(affected)

st2 := new(Student)

result,err := engine.Where("xxx=?", 1).Get(st2)

fmt.Println(result)

fmt.Println(st2.Username)

fmt.Println(st2.Address)

}

创建数据库:

CREATE TABLE `student` (

`xxx` int(11) NOT NULL AUTO_INCREMENT,

`yyy` varchar(64) NOT NULL,

`zzz` varchar(256) NOT NULL ,

PRIMARY KEY (`xxx`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

运行结果:

1

true

taoge

China

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

您可能感兴趣的文章:MySQL执行update语句和原数据相同会再次执行吗

MySQL修改innodb_data_file_path参数的一些注意事项

Mysql查询很慢卡在sending data的原因及解决思路讲解

mysql慢查询优化之从理论和实践说明limit的优点

MySQL批量插入和唯一索引问题的解决方法

mysql的in会不会让索引失效?

Mysql的数据库迁移到另一个机器上的方法详解

Mysql经典高逼格/命令行操作(速成)(推荐)

浅谈Mysql、SqlServer、Oracle三大数据库的区别

Mysql开启慢SQL并分析原因

mysql连接 xorm_使用go xorm来操作mysql的方法实例相关推荐

  1. MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

    MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库. 有关 MySQL 远程管理软件,你可以选择 ...

  2. c语言连接mysql(入门)_MySQL入门之C语言操作MySQL

    基本概念 C APIs包含在mysqlclient库文件当中,与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询.#include #include #include #include # ...

  3. swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离

    为什么要读写分离? 一般的系统都是读多写少,利用读写分离,可以提升mysql的效率 读写分离后,从库可以水平扩展 下面我们开始代码之旅吧 配置先改造: $config = [ 'host'=> ...

  4. 【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!

    点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...

  5. centos写mysql光标移到上一行_python操作mysql——使用pymysql库

    pymysql是python3连接mysql操作的库,在python2中使用的是mysqldb 1.基础操作 创建连接 import pymysqldb_conn = pymysql.connect( ...

  6. 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...

    前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...

  7. mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)

    数据库及其编程API来源于不同的背景,开发人员可以从众多的数据库中选择一种,每种数据库都有自己的一套编程API,这就为数据库编程造成了很大的局限性.SQL是标准化数据库编程接口的一种尝试,然而各种数据 ...

  8. c# mysql 插入 和 查询_C#访问和操作MYSQL数据库

    这里介绍下比较简单的方式,引用MySql.Data.dll然后添加一个MySqlHelper类来对MySql数据库进行访问和操作. 1.将MySql.Data.dll引用到你的项目中 添加引用后在你的 ...

  9. python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...

    Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...

  10. mysql连接不断线_某些小时后MySql连接自动掉线

    mysql连接不断线 MySql配置为删除任何闲置超过8小时的连接. 这意味着什么? 在8个小时的间隔后返回到已部署的应用程序之后(如果未更改默认SQL参数),将会遇到异常情况. 如何解决这个问题? ...

最新文章

  1. c++创建包含opencv的dll供C,C#调用
  2. 【深度学习】深度学习模型训练全流程!
  3. java实现js取反_特定位取反(js实现)
  4. 【渝粤题库】广东开放大学 网络营销基础与实践 形成性考核 (2)
  5. [Phoenix] 十、全局索引设计实践
  6. 实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】
  7. mpfr-3.1.0编译方法
  8. C语言内存地址对齐详解
  9. hadoop jar 找不到main class_10年老架构,教你HadoopJob使用第三方依赖jar文件,不来就后悔吧...
  10. python 代码行数统计工具_Python实现一个代码行数统计工具
  11. 关于震旦AD248B双面打印
  12. 上传漏洞-一句话木马
  13. DOS命令和linux
  14. 教育教学中,为什么需要培养学生的创新思维?
  15. java调用python文件的几种方式【超细讲解!】
  16. Jenkins执行批处理文件、powershell失败
  17. 高级语言程序设计实验c,高级语言程序设计-实验四 循环结构程序设计
  18. 测试开发工程师持续更新
  19. IBM:以现代化存储支持企业数字化转型
  20. 透明桌面便签APP下载安装操作步骤

热门文章

  1. spring多数据源配置,实现读写分离
  2. Session一次错误记录
  3. POJ_2823 Sliding Window(单调队列)
  4. 下载《SUN的UNIX操作系统solaris 10 for x86》(solaris 10)ver 10[ISO]
  5. ef codefirst字段类型与sqlserver表字段类型对应概要
  6. 报错:ReferenceError: Cannot access 'age' before initialization
  7. OFFICE拼写语法检查:全部忽略、全部更正的功能
  8. 讲幻灯片的基本技巧——2021年中会议发言之二
  9. 管理新语:工作没做好,批评几句,怎么成了诛心
  10. 编程基本功:谁改出的问题谁解,对不对?