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

我开源了Go语言连接数据库和一键生成结构体的包【实用】

项目地址:https://gitee.com/zht639/my_gopkg

autosql

autosql 是一个简化数据库使用的模块,支持常见的数据库(MySQL、PostgreSQL、SQLite、SQL Server)。该模块不仅提供了数据库连接函数,还能自动生成数据表对应的结构体,极大简化了数据库的初始化操作。

一、使用方法
打开项目根目录,在该目录下打开命令行,然后按如下步骤操作。

(1)初始化本地mod(有则跳过此步)

go mod init 你的模块名

(2)下载到本地(若之前就下载过,请忽略此步,转至第四步)

go get gitee.com/zht639/my_gopkg

(3)在go文件中导包即可

import "gitee.com/zht639/my_gopkg/autosql"

(4)若之前就下载过我的包,则需要打开mod,删除require语句,再执行如下指令

go mod tidy

二、功能概述

  • 连接函数:

    • ConnMysql(username, password, host, port, dbname string): 连接 MySQL 数据库。
    • ConnPostgres(username, password, host, port, dbname string): 连接 PostgreSQL 数据库。
    • ConnSQLite(filepath string): 连接 SQLite 数据库。
    • ConnSQLServer(username, password, host, port, dbname string): 连接 SQL Server 数据库。
  • 结构体生成:

    • GenStruct(db *gorm.DB, tableName string): 生成数据库中指定表的结构体。
    • GenAllStructs(db *gorm.DB): 生成数据库中所有表的结构体。

    使用生成结构体功能可以将数据库中的表映射为 Go 语言的结构体,极大地提高了开发效率和代码的可维护性。

三、使用示例

以mysql为例,连接数据库并生成表的结构体:

package mainimport ("fmt""gitee.com/zht639/my_gopkg/autosql"
)func main() {db, err := autosql.ConnMysql("root", "123456", "localhost", "3306", "db01")if err != nil {fmt.Println(err)return}// 自动生成所有表对应的结构体autosql.GenAllStructs(db)//或者生成指定表对应的结构体//autosql.GenStruct(db, "student")
}

该函数将会在当前目录下(main.go所在目录)生成一个model包,该文件包含了数据库中所有表的结构体,
目录结构如下:

├─model
│    grade.gen.go
│    student.gen.go
│    user.gen.go

打开其中一个文件,它不仅包含了结构体定义,还包含了json绑定字符串和返回表名的方法:

// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.
// Code generated by gorm.io/gen. DO NOT EDIT.package modelimport ("time"
)const TableNameStudent = "student"// Student mapped from table <student>
type Student struct {Stuid int32     `gorm:"column:stuid;primaryKey;autoIncrement:true" json:"stuid"`Stuno string    `gorm:"column:stuno" json:"stuno"`Name  string    `gorm:"column:name" json:"name"`Sex   string    `gorm:"column:sex" json:"sex"`Age   int32     `gorm:"column:age" json:"age"`Birth time.Time `gorm:"column:birth" json:"birth"`
}// TableName Student's table name
func (*Student) TableName() string {return TableNameStudent
}

之后若数据库中的表结构发生变化,只需用GenStruct()GenAllStructs()重新生成结构体即可。

注:该包基于GORM相关的包,但本人的包已包含相关依赖,直接下载本人的包即可使用GORM,CRUD操作也推荐使用GORM的提供的函数。

相关文章:

我开源了Go语言连接数据库和一键生成结构体的包【实用】

项目地址&#xff1a;https://gitee.com/zht639/my_gopkg autosql autosql 是一个简化数据库使用的模块&#xff0c;支持常见的数据库&#xff08;MySQL、PostgreSQL、SQLite、SQL Server&#xff09;。该模块不仅提供了数据库连接函数&#xff0c;还能自动生成数据表对应的结…...

Sentinel 快速入门

前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读&#xff1a;Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界&#xff01;这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库&#xff08;Java 客户端&#xff09;&#xff1a…...

基于SpringBoot健康生活助手微信小程序【附源码】

基于SpringBoot健康生活助手微信小程序 效果如下&#xff1a; 管理员登录界面 管理员主界面 用户管理界面 健康记录管理界面 健康目标管理界面 微信小程序首页界面 活动信息界面 留言反馈界面 研究背景 近年来&#xff0c;由于计算机技术和互联网技术的飞速发展&#xff0c;…...

功能安全实战系列-软件FEMA分析与组件鉴定

本文框架 前言1. 功能安全分析1.1 Why1.2 What?1.3 How?1.3.1 分析范围确定1.3.2 失效模式分析1.3.3 安全措施制定1.3.4 确认是否满足功能安全目标2. 软件组件鉴定2.1 Why2.2 How?前言 在本系列笔者将结合工作中对功能安全实战部分的开发经验进一步介绍常用,包括Memory(Fl…...

【数据结构与算法】链表(上)

记录自己所学&#xff0c;无详细讲解 无头单链表实现 1.项目目录文件 2.头文件 Slist.h #include <stdio.h> #include <assert.h> #include <stdlib.h> struct Slist {int data;struct Slist* next; }; typedef struct Slist Slist; //初始化 void SlistI…...

svn-拉取与更新代码

右键项目文件 进行更新与提交代码&#xff0c;提交代码选择更改的文件以及填写commit...

【C++ 算法进阶】算法提升四

数组查询问题 &#xff08;数组优化&#xff09; 题目 数组为 {3 &#xff0c; 2&#xff0c; 2 &#xff0c;3 &#xff0c;1} 查询为&#xff08;0 &#xff0c;3 &#xff0c;2&#xff09; 这个查询的意义是 在数组下标0~3这个范围上 有多少个2 &#xff08;答案为2&…...

多种方式实现安全帽佩戴检测

为什么要佩戴安全帽 在探讨安全帽佩戴检测之前&#xff0c;我们先来了解下安全帽佩戴的必要性&#xff1a; 保护头部免受外力伤害 防止物体打击 在建筑施工、矿山开采、工厂车间等场所&#xff0c;经常会有高空坠物的风险。例如在建筑工地上&#xff0c;可能会有工具、材料、…...

基于PHP+MySQL+Vue的网上订餐系统

摘要 本文介绍了一个基于PHPMySQLVue技术的网上订餐系统。该系统旨在为用户提供便捷的在线订餐服务&#xff0c;同时提高餐厅的运营效率。系统后端采用PHP语言开发&#xff0c;利用MySQL数据库进行数据存储与管理&#xff0c;实现了用户注册登录、菜品浏览、购物车管理、订单提…...

Vue学习笔记 Class绑定 Style绑定 侦听器 表单输入绑定 模板引用 组件组成 组件嵌套关系

文章目录 Class绑定绑定对象绑定数组注意事项 style绑定绑定对象代码效果展示 绑定数组 侦听器注意的点代码效果 表单输入绑定示例代码效果展示 修饰符.lazy.number.trim 模板引用组件组成组件组成结构引入组件步骤style中的scoped作用 组件嵌套关系 Class绑定 绑定对象 绑定数…...

【AIGC】ChatGPT与人类理解力的共鸣:人机交互中的心智理论(ToM)探索

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;心智理论(Theory of Mind,ToM)心智理论在心理学与神经科学中的重要性心智理论对理解同理心、道德判断和社交技能的重要性结论 &#x1f4af;乌得勒支大学研究对ChatGPT-4…...

代码训练营 day39|0-1背包问题,LeetCode 416

前言 这里记录一下陈菜菜的刷题记录&#xff0c;主要应对25秋招、春招 个人背景 211CS本CUHK计算机相关硕&#xff0c;一年车企软件开发经验 代码能力&#xff1a;有待提高 常用语言&#xff1a;C 系列文章目录 第九章 动态规划part03 文章目录 前言系列文章目录第九章 动态…...

LeetCode 203 - 移除链表元素

题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 解题思路 创建一个虚拟头节点dummyHead&#xff0c;并将其next指向给定的头节点head&#xff0c;这样可以避免处理头节点的特…...

【海图界面上一些常见术语UTC、HDG、COG、SOG、LAT、LON的基本解释】

当然&#xff0c;以下是关于海图界面上一些常见术语UTC、HDG、COG、SOG、LAT、LON的基本解释&#xff1a; UTC (Coordinated Universal Time) 定义&#xff1a;UTC 是协调世界时&#xff08;Coordinated Universal Time&#xff09;的缩写&#xff0c;是一种与地球自转无关的…...

HL7协议简介及其在STM32上的解析实现

近期完成一个医疗相关的项目,其中包括了体征监测设备,该设备使用的通信协议便是HL7 V2.4 协议,在医疗信息化领域,HL7(Health Level Seven)协议扮演着至关重要的角色。它是一种国际标准,用于定义医疗机构间以及医疗设备与信息系统之间的数据交换格式和通信协议。HL7标准旨…...

TensorRT推理端到端

TensorRT推理端到端 1.参考链接2.宿主机上安装CUDA 12.4.13.安装nvidia-container-toolkit4.创建ghcr.io/intel/llvm/ubuntu2204_base容器5.容器内安装CUDA 12.4.1 + TensorRT10.1.06.安装依赖7.准备resnet50模型8.准备bert模型9.准备yolov5m模型10.编译TensorRT推理程序11.onn…...

获取历史的天气预报数据的网站

要获取从2019年到现在某个中国城市的天气数据&#xff0c;您可以通过以下方法实现&#xff1a; 1. 使用第三方天气数据API 许多天气服务提供商提供了历史天气数据的API接口&#xff0c;您可以通过这些API获取所需的数据。以下是一些常用的天气数据API提供商&#xff1a; 1.1…...

【VUE】Vue中常用的修饰符

事件修饰符 .stop&#xff1a;阻止事件冒泡。.prevent&#xff1a;阻止默认事件。.capture&#xff1a;使用事件捕获模式。.self&#xff1a;只当事件在该元素本身&#xff08;比如不是子元素&#xff09;触发时触发回调。.once&#xff1a;只触发一次事件。 按键修饰符 .en…...

数据分箱:如何确定分箱的最优数量?

选择最优分箱可以考虑以下几种方法&#xff1a; 一、基于业务理解 分析业务背景&#xff1a;从业务角度出发&#xff0c;某些特征可能有自然的分组或区间划分。例如&#xff0c;年龄可以根据不同的人生阶段进行分箱&#xff0c;收入可以根据常见的收入等级划分。 优点&#x…...

机器学习核心功能:分类、回归、聚类与降维

机器学习核心功能&#xff1a;分类、回归、聚类与降维 机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习&#xff0c;它们可以进一步细化为特定的任务&#xff0c;如分类、回归、聚类和降维…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...