mysql连接 xorm_使用go xorm来操作mysql的方法实例
在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的方法实例相关推荐
- MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南
MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库. 有关 MySQL 远程管理软件,你可以选择 ...
- c语言连接mysql(入门)_MySQL入门之C语言操作MySQL
基本概念 C APIs包含在mysqlclient库文件当中,与MySQL的源代码一块发行,用于连接到数据库和执行数据库查询.#include #include #include #include # ...
- swoole 连接mysql_swoole教程:用swoole4操作mysql连接池之读写分离
为什么要读写分离? 一般的系统都是读多写少,利用读写分离,可以提升mysql的效率 读写分离后,从库可以水平扩展 下面我们开始代码之旅吧 配置先改造: $config = [ 'host'=> ...
- 【MySQL】如何最大程度防止人为误操作MySQL数据库?这次我懂了!!
点击上方蓝色"冰河技术",关注并选择"设为星标" 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单.稳定.可扩展的延迟消息队列框架 ...
- centos写mysql光标移到上一行_python操作mysql——使用pymysql库
pymysql是python3连接mysql操作的库,在python2中使用的是mysqldb 1.基础操作 创建连接 import pymysqldb_conn = pymysql.connect( ...
- 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...
前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...
- mysql odbc c语言_C语言ODBC操作MySQL数据库(示例代码)
数据库及其编程API来源于不同的背景,开发人员可以从众多的数据库中选择一种,每种数据库都有自己的一套编程API,这就为数据库编程造成了很大的局限性.SQL是标准化数据库编程接口的一种尝试,然而各种数据 ...
- c# mysql 插入 和 查询_C#访问和操作MYSQL数据库
这里介绍下比较简单的方式,引用MySql.Data.dll然后添加一个MySqlHelper类来对MySql数据库进行访问和操作. 1.将MySql.Data.dll引用到你的项目中 添加引用后在你的 ...
- python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...
Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...
- mysql连接不断线_某些小时后MySql连接自动掉线
mysql连接不断线 MySql配置为删除任何闲置超过8小时的连接. 这意味着什么? 在8个小时的间隔后返回到已部署的应用程序之后(如果未更改默认SQL参数),将会遇到异常情况. 如何解决这个问题? ...
最新文章
- c++创建包含opencv的dll供C,C#调用
- 【深度学习】深度学习模型训练全流程!
- java实现js取反_特定位取反(js实现)
- 【渝粤题库】广东开放大学 网络营销基础与实践 形成性考核 (2)
- [Phoenix] 十、全局索引设计实践
- 实现一个顺序表的建立、查找、插入和删除操作【数据结构实验报告】
- mpfr-3.1.0编译方法
- C语言内存地址对齐详解
- hadoop jar 找不到main class_10年老架构,教你HadoopJob使用第三方依赖jar文件,不来就后悔吧...
- python 代码行数统计工具_Python实现一个代码行数统计工具
- 关于震旦AD248B双面打印
- 上传漏洞-一句话木马
- DOS命令和linux
- 教育教学中,为什么需要培养学生的创新思维?
- java调用python文件的几种方式【超细讲解!】
- Jenkins执行批处理文件、powershell失败
- 高级语言程序设计实验c,高级语言程序设计-实验四 循环结构程序设计
- 测试开发工程师持续更新
- IBM:以现代化存储支持企业数字化转型
- 透明桌面便签APP下载安装操作步骤
热门文章
- spring多数据源配置,实现读写分离
- Session一次错误记录
- POJ_2823 Sliding Window(单调队列)
- 下载《SUN的UNIX操作系统solaris 10 for x86》(solaris 10)ver 10[ISO]
- ef codefirst字段类型与sqlserver表字段类型对应概要
- 报错:ReferenceError: Cannot access 'age' before initialization
- OFFICE拼写语法检查:全部忽略、全部更正的功能
- 讲幻灯片的基本技巧——2021年中会议发言之二
- 管理新语:工作没做好,批评几句,怎么成了诛心
- 编程基本功:谁改出的问题谁解,对不对?